Ja ich habe das etwas unverständlich ausgedrückt.
Man muss erstmal wissen was ein Block ist. Alle Daten, egal welcher Art, sind folgen von 0 und 1. Diese werden wiederum in Blöcke eingeteilt und entsprechend interpretiert. Z.B. werden für einen int oft 4 * 8 Bit genommen.
Da RSA mathematisch arbeitet musst du also die Blöcke als Zahlen interpretieren.
Als öffentlichen schlüssel hast du die zahlen x und m
und als privaten schlüssel hast du y und m
Die verschlüsselung wäre ja Eingabeblock^x modulo m
Das Ergebnis ist also eine Zahl zwischen 0 und m. Daher ist ein Block so groß wie m.
m wird jedoch aus beiden Priemzahlen errechnet.
Das wollte ich damit sagen.
Mit standardvariablen kann man nur sehr geringe Blöcke darstellen. Diese sind extrem leicht zu erraten und extrem unsicher. Momentan sagt man das eine chiffre ab 1024 Bit sicher ist. Also brauchst du Zahlen mit 1024 Bit ein long hat aber nur 32 Bit und ist unsicher.
Zudem scheint es ja so als ob deine Priemzahlen an die crypt function übergeben werden. Also 2 * 32 Bit aber du stopfst es in ein char der auf einem x86 meist 8 Bit hat. Passt also eigentlich nicht.
Genauere Infos kann ich dir geben wenn ich meine Bücher wieder finde :lol:
Im Web sollten aber genug Infos vorhanden sein