sehr sehr grosse Zahl abspeichern!
-
Hi
ich möchte den Diffie-Helman-Algorithmus anwenden.Der Diffie-Helman-Algorithmus
Zwei Personen, A und B, möchten einen gemeinsamen Schlüssel vereinbaren. Der Diffie-Helman-Algorithmus ist kein Schlüsseltausch- sondern ein Schlüsselerzeugungsverfahren. Die beiden Teilnehmer einigen sich auf eine (normalerweise sehr große) Primzahl p, sowie eine Basis g, für die gilt 1<g<p. Diese beiden Zahlen müssen natürlich nicht geheimgehalten werden. Das Protokoll bedient sich nun der diskreten Exponentialfunktion mit den bekannten Eigenschaften als Einwegfunktion.die Primzahl liegt zwischen 1000 und 96931
nun wird da eine hoch funkion benötigt die ich mir auch geschrieben habe!
aber wie kann ich 96931 hoch 96930 abspeichern! als Zahl, so das ich damit auch noch rechnen kann!der wert wird nur ganz kurz benötigt da er nachher wieder modulo mit einer anderen Zahl genommen wird!
Hoffe ihr könnt mir helfen
THX
Dagsta
-
vieleicht bringt es etwas wenn ich den code mal mit poste:
/* struct keys { int primzahl; //p int basis; //g 1<g<p int erg; //alpha int oErg; //beta int secretkey; //a a<p-1 }; a alpha = g mod p */ Primzahlen[0] = 10753; Primzahlen[1] = 11551; Primzahlen[2] = 12329; Primzahlen[3] = 13043; Primzahlen[4] = 13831; ... Primzahlen[98] = 95959; Primzahlen[99] = 96931; ... Randomize(); Keys[i].primzahl = Primzahlen[random(100)]; //Keys = Array von keys Randomize(); Keys[i].basis = random(Keys[i].primzahl - 2) + 1; Randomize(); Keys[i].secretkey = random(Keys[i].primzahl - 2) + 1; Keys[i].erg = hoch(Keys[i].basis, Keys[i].secretkey) % Keys[i].primzahl;
-
wobei ich erg nicht als int deklarieren wüder. Wenn dan als unsigned long oder noch besser __int64
wenn die Zahl zu gruß wird, musste die Zahlen manuell in ein Stringarray verrechnen. Ziffer für Ziffer.
-
und wie kann ich mit einem solchen stringarray rechnen? also modulo? oder *
ne erg ist immer kleiner als die primzahl weil ja %primzahl.
und passt damit in int
-
hm, ja haben wohl aneinander vorbei geredet
aber wie kann ich 96931 hoch 96930 abspeichern! als Zahl, so das ich damit auch noch rechnen kann!
das war mein Einwand zum Thema int. Hab mich aber verschaut. Dachte, du wolltest das Exponentergebnis der Primzahlen in ein int ablegen.
Abspeichern würde ich 96931 hoch 96930 aber nicht als Zahl sondern die Basis und Exponent einzeln.
-
Das mache ich ja schon! aber um vom ergebniss den modulo zu ziehen muss ich das ergebniss ja irgentwie ausrechnen und da werde ich an einem kurzen abspeichern wohl kaum herumkommen! oder?
MFG
Dagsta
-
Hi,
dagsta schrieb:
nun wird da eine hoch funkion benötigt die ich mir auch geschrieben habe!
warum?
Also ma kurzes Zitat:
BCB Hilfe schrieb:
Header-Datei
math.hKategorie
Mathematische RoutinenSyntax
#include <math.h>
double pow(double x, double y);
long double powl(long double x, long double y);Beschreibung
Liefert das Ergebnis der Berechnung x hoch y zurück.MfG
Alexander Sulfrian
-
naja, 96931 hoch 96930 und long double passen nicht so recht zusammen da >1E+37
-