dh-Materialien
Einführung in Maple    
Anwendungen
 

Public-Key-Verschlüsselung

> restart;

Die zu verschlüsselnde Nachricht, die Alice an Bob schicken möchte:

> Nachricht:= "I love you";

Umwandeln der Nachricht in eine Zahl m (message ):

> c:= convert(Nachricht, bytes);
  z:= 0:
  for i from 1 to nops(c) do z:= 256*z + c[i]; od:
  m:= z;


Berechnen der Schlüssel von Alice:

> p:= nextprime(43672342156995):
  q:= nextprime(271141486213133):
  public1[A]:= p*q;                       # öffentlich
  h:= (p-1)*(q-1) + 1:
  ifactor(h);
  public2[A]:= op(1, op(3, ifactor (h))); # öffentlich
  secret[A]:= h/public2[A];               # geheim




Berechnen der Schlüssel von Bob:

> p:= nextprime(7858462424243636):
  q:= nextprime(1237432424242):
  public1[B]:= p*q;                       # öffentlich
  h:= (p-1)*(q-1) + 1:
  ifactor (h);
  public2[B]:= op(1, op(3, ifactor (h))); # öffentlich
  secret[B]:= h/public2[B];               # geheim



public2[B] := 139
secret[B] := 69959109413285411384914015

Signieren von m durch Alice:

> m_signiert:= m &^ secret[A] mod public1[A];

Versiegeln von m_signiert durch Alice mit Hilfe des öffentlichen Schlüssels von Bob:

> m_signiert_versiegelt:= m_signiert &^public2[B] mod public1[B];

Entschlüsseln dieser Zahl durch Bob:

> m_sign:= m_signiert_versiegelt &^ secret[B] mod public1[B];

Entfernen der Signatur durch Bob:

> m_orig:= m_sign &^ public2[A] mod public1[A];

Umwandeln dieser Zahl in die ursprüngliche Nachricht:

> z:= m_orig:
  i:= 0:
  while z > 0 do
    i:= i + 1:
    cod[i]:= z mod 256:
    z:= (z - cod[i])/256: 
  end:
  cod:= [seq(cod[i-j+1], j=1..i)];
  convert(cod, bytes);


 Home   Back   Top