Einzelnen Beitrag anzeigen

gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#6

Re: Chinesischer Restsatz, pseudocode gesucht

  Alt 21. Jun 2009, 19:06
Da sind noch ziemlich schlimme Bugs drin:

1. modinvers ist total daneben, obwohl ich nicht weiß, was Du da eigentlich vorgehabt hast. Du solltest Dir wirklich angewöhnen, in Kommentare zu schreiben, was Deine Funktionen machen. Auf jeden Fall hat phi da nix zu suchen.

z := modinvers(x,y) soll z berechnen mit z*x == 1 mod, also ProduktModulo(z,x,y) muss 1 sein.

Du solltest zuerst modinvers debuggen, bis Du folgende Ergebisse hast mit p=763542356462783642401

modinvers(36542354527354,p) = 119609365025838791859
modinvers(675423754723541,p) = 733615848005635595127

2. h = (m_1 - m_2) * qInv mod p ist falsch berechnet. Einzelschritte:
h = m_1 - m_2
h = Modulo(h,p)
h = ProduktModulo(h, qInv, p)

3. Der Exponent e ist nicht definiert

4. Bei der Schlüsselerzeugung muss geprüft werden, daß
a) gcd(e,p-1) = 1
b) gcd(e,q-1) = 1
c) und p<>q
Ansonsten ist es sehr wahrscheinlich, daß die Entschlüsselung nicht funktionieren. Wenn c nicht erfüllt ist, ist das ganze auch total unsicher.

5. phi:=mathe.Produkt(p,q) ist völlig falsch! phi = (p-1)*(q-1) wäre OK, besser ist phi = lcm(p-1,q-1) = (p-1)*(q-1)/gcd(p-1,q-1).


Weitere Vorschläge: Schreibe folgende Funktionen für die StringMatheLib: SummeModulo, DifferenzModulo, gcd = ggt = größter gemeinsamer Teiler.

Gruß Gammatester
  Mit Zitat antworten Zitat