C++ RSA - Scheinbar wird irgendwo die Zahl zu groß

Lar337

Fleet Admiral
Registriert
Dez. 2006
Beiträge
10.475
Hi ;)
Ich versuche grade eine RSA-Verschlüsselung in C++ zu programmieren... Allerdings wird bei ab bestimmten Werten irgendwo eine Zahl wahrscheinlich zu groß. Auf jeden Fall gibts dann nurnoch Murks.
Ich tippe darauf, dass dies bei der Verschlüsselung selbst geschieht (int RSA()).
Könnte sich das vll mal jemand angucken?

Hier der Programmcode des kurzen Programms... Gibt bisher nur einmal den verschlüsselten und wieder entschlüsselten Wert vom Ausgangswert 100 aus.

Erhöht man nun die Spanne des Primzahlengenerators auf höhere Werte, kommt nix sinnvolles mehr raus :(

Achja, und falls noch jemand ne Verbesserung hat oder nen Fehler sieht, immer her damit ;)
 
Zuletzt bearbeitet:
Die RSA Verschlüsselung beruht ja auf riesengroßen Primzahlen, die dann auch noch miteinander multipliziert werden.

Versuch mal anstatt "int" "unsigned long" zu verwenden!
Negative Vorzeichen kommen ja bei dieser Verschlüsselung nicht vor.

Wenns immer noch nicht reicht, dann müsste ein "double" seinen Dienst verrichten.
Jedoch würde die Genauigkeit (wahrscheinlich beim casten) darunter leiden, sodass man die Verschlüsselung in den Eimer schmeißen könnte.


Einfach mal bisserl rumprobieren.
Habe deinen Quellcode nicht angeschaut, aber einfach nur "int" für RSA scheint mir stark untertrieben^^

Kann auch sein, dass ich dir nen totalen Quatsch verzählt hab ;)
Viel Glück!
 
Unsigned long ist ebenfalls viels zu klein, zumindest für diese Größenordnungen. Auch die Präzision eines Double wird hier sehr sehr schnell nicht ausreichen. Was benötigt wird, ist eine Bibliothek für solche riesigen Zahlen.

Die GMP-Lib ist zum Beispiel bestens geeignet:
http://www.gmplib.org/
 
hehe ja, wie mein vorposter schon schrieb:
schon bei deinem rsa beispiel reicht für die berrechnung dein zahlenraum nicht mehr aus. die von ihm verlinkte gmplib wird übrigens auch von diversen top oos encryption-bibliotheken verwendet. sie ist auch sehr einfach zu verwenden.
 
Gibts ein Beispiel, wie man sie verwendet? Hab sie mir nämlich (neben einigen anderen, deutlich komplizierer erscheinenden) mal angeguckt, aber nicht so recht durchgeblickt...

EDIT: Wieso klappts denn bei dem Beispiel dann noch?!
 
Zuletzt bearbeitet:
beispiele und tutorials gibt's zu hauf. z.b. auf der seite mal schaun und google hilft ebenfalls.
schau dir die doku dazu mal an.
 
Penibler Weise muss ich mal sagen, dass die Link-Fehler beim Linken kommen und nicht beim Kompilieren. :)

Welches OS bzw. welche Umgebung benutzt du denn überhaupt?

Falls Linux, dann vermutlich ein ./configure gefolgt von einem make clean all install. Danach die .a/.so (je nachdem ob du statisch oder dynamisch linken willst) irgendwohin kopieren und mit -l<libname ohne Präfix lib> dazu linken.

Falls Windows, wird vermutlich ein Projectfile für deine Umgebung dabei sein. Ansonsten wird das Ding sicherlich eine ausführliche Readme zum Bauen und Linken haben. RTFM :)
 
Zurück
Oben