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.h

    Kategorie
    Mathematische Routinen

    Syntax
    #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 😉




Anmelden zum Antworten