Modulo C++ implementation (Diffie-Hellman-Schlüsselaustausch)

trunksen

trunksen

Doppel-As
Hi!

Also ich hoffe einmal (ich gehe fast davon aus :D ), dass einige Leute hier im

Forum den Diffie-Hellman-Schlüsselaustausch kennen.

Unser Professor hat uns die Aufgabe gestellt, dass sich Alice und Bob auf die Primzahl p = 113 und g = 3 einigen.
Weiters wird m = 54 und n = 42 übertragen (in Wikipedia mit A und B bezeichnet)!

Wir haben jetzt die Aufgabe (durch ausprobieren!!!) auf den (von Bob und Alice) zufällig gewählten Wert a und b zu kommen (weiters dann auch auf den Schlüssel ^^)

d.h. man hat jetzt die Gleichungen:

54 = 3^a mod 113
42 = 3^b mod 113

Ich habe jetzt Wirklich keine Lust habe, händisch die Zahlen von 1-111 einzusetzen um zu sehen ob die Modulo-Arithmetik dann passt.

Daher meine Frage:

Hat irgendjemand einen Tipp wie ich diese zwei modulo Gleichungen in ein C++ Programm einbinden kann, dass dann mithilfe einer Schleife a u. b von 1-111 durchläuft?

mfg trunksen
 
fmod() und pow().
Siehe auch hier.

edit: Ich nehms zurück. Bei derart großen Zahlen brauchst du entweder eine spezielle Library, oder du machst es einfach in bc oder python, wozu ich raten würde.
 
Zuletzt bearbeitet:
Von C hab ich keine Ahnung, aber in Java z.B. gibt es die Klasse BigInteger mit der Methode modPow, die tut genau das, was du willst.

Link

Ansonsten eben selbst schreiben. Da gibt's schon 'nen Algorithmus. So große Zahlen kommen nicht vor, wenn man mit der dort angegebenen Methode rechnet.
 
Zuletzt bearbeitet:
In C++? Du maehst deinen Rasen sicher auch mit ner Sense?

In Python ist das trivial:
Code:
for i in range(1, 112):
   if ( (3 ** i) % 113) == 54:
      print i
mfg,
bytepool
 
Welchen Datentypen verwendest du denn für die Zahlen?
Notfalls würde ich bei großen Zahlen long double verwenden...
oder habe ich da jetzt i-etwas falsch verstanden?
 
Welchen Datentypen verwendest du denn für die Zahlen?
Notfalls würde ich bei großen Zahlen long double verwenden...
oder habe ich da jetzt i-etwas falsch verstanden?

An wen genau richtet sich Deine Frage? In C(++) kannst Du kein long double mit '%' verwenden, es ist ein Operator fuer ganze Zahlen.
 

Ähnliche Themen

Mysteriöser 11.4 Absturz - Maschine läuft, SSH und vor Ort Login unmöglich

Ubuntu X / dbus problem

Festplatte friert ein nach suspend/resume

Textkonsole mit KMS zu klein

Problem mit meinem Raid, benötige eure Hilfe

Zurück
Oben