Ich schreibe einen RSA-Verschlüsselungsalgorithmus in C. Ich plane nicht, es überall in Produktion zu bringen, es ist hauptsächlich nur so, dass ich mein Verständnis von Verschlüsselung erweitern kann.Wie mit massiven Zahlen in C
Wie gehe ich mit den riesigen Zahlen um, die RSA generiert? Selbst wenn die Entschlüsselung mit einem relativ kleinen privaten Schlüsseln wie 103 durchgeführt wird, ich habe immer noch das Problem mit Dingen wie dies zu tun:
67^103 mod 143 = (1,21816096336830017301951805581 x 10^188) mod 143
Was ist der beste Weg, um eine Nummer dieser Größe zu speichern? Gibt es eine Möglichkeit, dies mit Standardbibliotheken zu tun? .
Sie können all große Zahl Arithmetik selbst implementieren, aber es ist einfacher, nur eine bestehende Multi-Präzision Bibliothek wie GMP zu verwenden. –
@ ArtjomB. Ich dachte, ich könnte möglicherweise eine mit Arrays zum Speichern von Zahlen in Base 2^64 implementieren. Ich wusste nicht, ob das praktisch wäre. – mstagg
Das würde funktionieren. Vorsichtig mit Überlauf obwohl. Sie müssen Multiplikation und dann Division (für Modulo) implementieren. Aber im Ernst, benutzen Sie einfach GMP. –