RSA wurde von Rivest, Shamir und Adleman 1977 als ein public key Verfahren entwickelt. Dieser Algorithmus ermöglicht sowohl Verschlüsselungen als auch digitale Signaturen. Die Sicherheit dieses Algorithmus beruht auf der Schwierigkeit der Faktorisierung großer Zahlen. Das ist besonders schwierig wenn diese große Zahl das Produkt zweier ungefähr gleich großer Primzahlen ist. Große Zahlen sind in diesem Fall mehrere hundert dezimal Stellen lang.
Um einen Schlüssel zu erzeugen wählt man 2 zufällige, große Primzahlen und Nun berechnet man das Produkt . Als nächstes wählt man den öffentlichen Exponenten , sodaß der größte gemeinsame Teiler von und gleich ist. Um eine schnelle Verschlüsselung zu gewährleisten wird meist niedrig gewählt. der geheime Exponent berechnet sich dann :
Jetzt ist der öffentliche Schlüssel und , der geheime Schlüssel ist .
Die Verschlüsselung der Nachricht erfolgt dann durch:
Die Entschlüsselung wird dann durch:
berechnet
Die Erstellung einer Signatur verläuft genau umgekehrt:
wobei der Hashwert der Nachricht ist. Die Verifikation erfolgt durch überprüfen ob gleich dem Hashwert ist.
Übliche Längen für den Modulus sind 512, 1024 und 2048 Bit, wobei 512 Bit nicht wirklich empfohlen werden kann.