RSA Potenzberechnung
-
Hi Leute!
Ich hab ein Uni-Projekt in dem ich eine RSA Simulation programmiern soll.
Ich bin vom Prinzip auch schon fertig, ich hab nur ein riesen Problem mit der Berechnung von C = K^E mod N.
Ich schaff es einfach nicht so riesige Potenzen wie z.B. 83119 zuberechnen.
Es wäre super wenn ihr eine Lösung hättet anbei findet ihr meine Funktion.Vielen Dank vorab!
Mathiasint Codiere(char p_cKlartext, int p_iE, int p_iN)
{
//ASCII der Taste, Schlüssel E und Modul N werden übergeben
__int64 iHilfe = 0;
int iC = 0;iHilfe = pow(p_cKlartext,p_iE); //Potenzieren
iC=fmodl(iHilfe,p_iN); //Modulo bildenreturn iC;
}Sorry ich hab nicht durchgeblickt wie ich den Quellcod "ordentlich" poste.
-
Das geht ja auch nicht mit läppischen 64Bit, da brauchst du etwas anderes wie z.B. BigInteger aus GMP.
-
Puhh... ich bin noch relativ neu auf diesen Gebiet.
Kannst du mir das näher erklären?
-
char p_cKlartext; //2^8 int p_iE; //2^31 /*unsigned*/ __int64 iHilfe = pow (p_cKlartext, p_iE);2^64 >= (2^8)^(2^31) || 64 == 2^6 2^(2^6) >= (2^8)^(2^31)da sollte dann wohl klar sein, dass das nicht ganz stimmen kann ^^
also: du brauchst eine Zahl, die ~unendlich groß werden kann...float (und double) fallen beide raus, weil du die Zahl genau brauchst...
Also:BigInteger aus GMP
musst du dir einen anderen Datentyp suchen, der genau ist UND in so großen Bereichen rechnen kann... Da gibts mehrere...
gn8 ^^
-
Ja das war mir ja eigentlich schon klar aber welchen genau soll ich nehmen.
Ich hab halt noch nicht so richtig viel Ahnung von C++.
Vielleicht könnt ihr es ja mal in meinen Code einbauen?
-
Du musst nach der Library googeln, sie runterladen und in eine Entwicklngsumgebung integrieren, das kann keiner hier für dich machen. Und beim googlen wirst du auch viele Codebeispiele finden.