Zitat:
um das RSA-Verfahren richtig und sicher auszuführen, nur in diesem Modus vernünftig rechnen kann
Verrenne dich da nicht geistig
Es gibt keinen Unterschied zwischen Binär, Hexadezimal oder zur Basis 2^32. Wichtig ist nur das Berechnungen zur Basis 2,16,2^32 kompatibel in den gespeicherten Datenstrukturen sind !!
Angenommen die Zahl 11 wird in einem Cardinal gespeichert, da enthält er
01011b = 0Bh = 11 intern ändert sich nichts an dessen Speicherung.
Wird nun 11 + 2 gerechnet entsteht in der gleichen Variable 13, = 01101h = 0Dh.
D.h. für deine Berechnungs Funktionen ist es nur wichtig das du zu einer Basis arbeitest wie 2^16 oder 2^32. Zb. 2^32 ist nichts anderes als obige TNummer = array[0..x] of Cardinal. Jedes Array Element ist dann ein Digit zu Basis 2^32.
Zahl = Number[0] + Number[1] * 2^32 + + Number[2] * 2^64 + Number[3] * 2^96
Zahl = Number[0] * 2^(32 * 0) + Number[1] * 2^(32 * 1) + Number[2] * 2^(32 * 2) + ... + Number[i] * 2^(32 * i).
Je besser diese Basis an die CPU angepasst ist um so besser und schneller arbeitet dein Code. Würdest du deinen Code aufbauend auf Strings die die Zahlen im Binärformat enthalten, dann wäre dies ca. 32 mal ineffizienter als zur Basis 2^32. Da die heutigen CPU's 32Bit Rechner sind sind sie mit einer basis von 2^32 am effizientesten.
Um also RSA Berechnungen durchführen zu können ist die Darstellung der Zahl als String irrelevant.
Falls du Interesse hast und dein Projekt privater Natur ist kann ich dir meine Large Integer Math. Library mailen. Darin enthalten ist auch RSA usw. Wichtig für dich wäre sie dann als Verifizierung deines eigenen Codes. Wenn man an hand einer fertigen Lib. seinen Code vergleichen kann ist dies viel wert.
Gruß Hagen