Hallo liebe Leute,
Mir bereitet RSA Kopfzerbrechen.
Code:
Legende:
C = Chiffre
T = Text
N = RSA Modul
E & D = Enc. & Decryption exponents
Verschlüsselung:
C = T^e mod N
Entschlüsselung
T = C^d mod N
Das Problem liegt hier: das RSA-Modul (N) muss größer sein als der Text (T), den man verschlüsseln will.
Warum? Nun, da, wenn N < T, man nicht zum richtigen Ergebnis kommt.
Nimmt man beispielsweise für T = "123" (entspricht 0x313233; 3 Bytes; wobei es verkehrt rum im Speicher liegt -> 0x333231)
und N 0x333230 (N hat die Größe 2^24 -> ebenfalls 3 Bytes),
dann käme niemals wieder der ursprüngliche Text (T) nach dem Verschlüsseln & Entschlüsseln raus.
Das sollte noch verständlich sein.
Ich finde leider keine passende/elegante Lösung zu diesem Problem. Nimmt man für N eine größere Zahl (z.B: 4 Bytes (2^32)), so geht man die
Gefahr ein, nach dem Modulo bei der Verschlüsselung eine größere Zahl (> 3 Bytes) als Ergebnis zu bekommen, da eben N = 4 Bytes ist.
Das einzige, was machbar wäre, wäre, für C (je 3 Bytes) einen größeren Speicherbereich (4 Bytes) zu reservieren
und anschließend bei der Entschlüsselung 4 Bytes aufeinmal entschlüsselt.
Übrigens, bitte schreibt nur, wenn ihr euch mit RSA auskennt und mir Tipps geben könnt.
Edit:
Ich bin nun nach langem Überlegen davon überzeugt, dass es anders gar nicht geht.
Ich verschlüssle 3 Bytes Datenblöcke und speichere sie in 4 Bytes. Nach dem Entschlüsseln weise ich sie in 3 Byte Datenblöcken wieder zusammen.
Falls trotzdem jeman eine bessere Idee hat, dann nur her damit
MfG