Datentyp für große Integerzahlen in cpp

Hallo, ich wollte ein kleines Ver- und Entschlüsselungstool in
CPP schreiben. Der Algorithmus soll RSA sein, wenn ich jetzt aber nen 512 bit schlüssel benutzen will, kann ich schlecht standard-datentypen verwenden…

In Java gibts für sowas die Klasse BigInteger

In C++ wirds doch auch was in der Art geben, ich werde ja nicht der erste sein, der so ein dösiges Programm schreibt…

Da es mir mehr ums verschlüsseln als um Datentypen und eigene Arithmetik implementieren geht, würde ich das ungern selber machen müssen…

Danke und Grüße
ruwn

Mich würde brennend interessieren, wozu du das brauchst, weil ich z.B. in meiner ganzen Programmierer- Laufbahn nicht ein einziges mal unter den Beschränkungen eines int zu leiden hatte…

Ich glaube, dass der Cpp-Standard das nicht unterstützt, jedoch gilt wie immer „gidf“, sodass man schnell solche Seiten hier findet:

https://mattmccutchen.net/bigint/

Habs noch nicht ausprobiert, aber schätzungeweise: Header includen & viel Spaß beim nutzen…

Grüße
Shisu

hi,

Danke, dass sieht ziehmlich nachdem aus was ich brauche…

Ich brauche große ganze Zahlen um zu verschlüsseln, der RSA Algorithmus beruht darauf, dass man große zusammengesetzte Zahlen nicht so leicht entschlüsseln kann…

Primzahlen sind dir wahrscheinlich ein Begriff, und wenn man 2 Primzahlen nimmt ca. 150 Dezimalstellen (ungefähr 512 bit Zahl) und die dann multipliziert, und nur dieses Ergebnis hat, ist es sehr sehr aufwendig diese Zahl wieder in ihre Faktoren zu zerlegen… bei 32-bit Zahlen schaffen das heutige heimpcs ganz locker…
Der aufwand der faktorisierung steigt aber quadratisch, somit ist 512 bit noch sehr sicher…

http://de.wikipedia.org/wiki/RSA-Kryptosystem

lg

Hallo ruwn,

versuch es mal mit „unsigned long“.
der kann 32 Bit, als 0 … 4294967295 zeichen.

Sollte für deine Operation hin kommen :wink:

Gruß

Das reicht nicht im entfertensten es ging mir um Zahlen zwischen 134078079299425970995740249982058461274793658205923933777235­614437217640300735469768018742981669034276900318581864860508­53753882811946569946433649006084096
und
268156158598851941991480499964116922549587316411847867554471­228874435280601470939536037485963338068553800637163729721017­07507765623893139892867298012168191.

Aber ich habe schon eine Bibliothek gefunden…

so long

was für zahlen willst du denn in den variablen speichern? (wie viele stellen, komma oder nicht etc.) ein beispiel wär nicht schlecht

was für zahlen willst du denn in den variablen speichern? (wie
viele stellen, komma oder nicht etc.) ein beispiel wär nicht
schlecht

Hi, danke für die Antwort, mir ging es um ganze (Integer) Zahlen zwischen

134078079299425970995740249982058461274793658205923933777235­614437217640300735469768018742981669034276900318581864860508­53753882811946569946433649006084096
und
268156158598851941991480499964116922549587316411847867554471­228874435280601470939536037485963338068553800637163729721017­07507765623893139892867298012168191.

Aber ich habe schon eine Bibliothek gefunden…

so long