/* * Code-Beispiel der RSA Verschluesselung */ \\ Verschluesselungs-Exponent e = 65537 \\ Es werden zwei aehnlich grosse Primzahlen berechnet. p = nextprime(2^64) \\ 8446744073709551629 q = nextprime(2^65) \\ 36893488147419103363 \\ Multiplikation der Primzahlen ergibt den RSA-Modulus n. n = p*q \\ 680564733841876929822888034435936028327 m = (p-1)*(q-1) \\ Eulersche Phi Funktion von n: m = φ(n) \\ Aus e und m ergibt sich der private Schluessel d. d = 1/e % m \\ 287534628001704843192908297534611003865 \\ Ein Text wird verschluesselt und wieder lesbar gemacht. text = "tarnkappe.info" \\ Der Text wird in ASCII-Buchstabencode umgewandelt. chars = Vec(Vecsmall(text)) \\ [116, 97, 114, 110, 107, 97, 112, 112, ... \\ Der Buchstabencode wird in das Zahlensystem zur Basis 256 umgewandelt code = fromdigits(chars, 256) \\ 2360480060567527850800680270718575 \\ Der Code wird mit dem oeffentlichen Schluessel vom Absenders verschluesselt. geheim = lift(Mod(code, n) ^ e) \\ 204950903863101360211085884671147980080 \\ Der Empfaenger entschluesselt die Nachricht mit dem privaten Schluessel. code = lift(Mod(geheim, n) ^ d) \\ 2360480060567527850800680270718575 \\ Der entschluesselte Code wird wieder lesbar gemacht. text = Strchr(digits(code, 256)) \\ "tarnkappe.info" printf("entschluesselter Text: %s\n", text);