Die Funktion schluessel() aus der letzten Übung wird umgeschrieben. Sie heißt jetzt mache_schluessel() und gibt nur die drei Schlüssel zurück. Da mit return nur ein Wert zurückgegeben werden kann, müssen die drei Zahlen in einem Array verpackt werden:
schl[0]=e; schl[1]=N; schl[2]=d; return schl;
Das Verschlüsseln erfolgt erfolgt in einer neuen Funktion verschluesseln(). Zu Beginn soll einfach eine Ziffer verschlüsselt werden. Wähle eine kleine Ziffer, z.B. 8.
Die Verschlüsslungsfunktion hat die Form:
C ≡ Ke mod N
Das heißt: der Klartext K (also z.B. die 8) wird hoch e genommen. Diese Zahl wird modulo N gerechnet. Der dann verbleibende Rest ist der Geheimtext C. Wichtig: K muss kleiner als N sein.
Das Problem: Das Potenzieren des Klartextes K mit e liefert ruck zuck Zahlen mit mehr als 17 Stellen. Dann geht aber JavaScript in die Knie und die Verschlüsslung wird unbrauchbar.
Die Lösung: Die Funktion potenz_modulo(b, e, mo) erwarte die drei Werte Basis b, Exponent e und Modulo mo. Sie liefert den Rest, also das C, für die Verschlüsslung zurück.
Die Entschlüsslungsfunktion hat die Form:
K ≡ Cdmod N
Dazu wird wieder die Funktion potenz_modulo(b,e,mo) verwendet.
Wenn alles ordentlich funktioniert, sollte die 8 wieder erscheinen. Gib im Browser den öffentlichen und privaten Schlüssel, den Geheimtext und den dechiffrierten Klartext aus.