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 ):
z:= 0:
m:= z;
Berechnen der Schlüssel von Alice:
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:
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
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:
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);