003
19.06.2003, 14:12 Uhr
~0xdeadbeef
Gast
|
OK, ich geh mal von der Notation dieses Artikels aus. Es ist bekannt, dass a^b mod c = (a mod c)^b mod c ist. Ich schreib den Code hier für kleine Schlüssel, die Verallgemeinerung auf String-Rechnerei ist offensichtlich. Ich empfehle die GNU Multiple Precision Library.
C++: |
typedef unsigned long long uint64; /*C99*/
uint64 rsa_encrypt(uint64 klartext, uint64 e, uint64 n) { uint64 cryptext = 1; klartext %= n; while(e--) { cryptext = (cryptext * klartext) % n; } return cryptext; }
|
rsa_decrypt entsprechend, nur, dass statt e d benutzt wird, und man den verschlüsselten reingibt und den entschlüsselten rauskriegt. Das Einlesen der Schlüssel, Rechnen mit Strings usw. ist trivial, aber ziemlich aufwändig, deswegen lass ich das hier. |