Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#6

Re: Public-Key ... schnelle Exponention

  Alt 9. Nov 2003, 18:25
Zitat:
Danke, das war ja schon recht eindeutig. Aber wie zählst du die Bits in deinem Code (3. Bit = 1?)
Dies hängt von der Darstellung der großen Integer in deinem Code ab. In meinem Code sind die Zahlen linear im Speicher gespeichert. D.h. $123456789ABCDEF0123456789ABCDEF steht im Speicher EF CD AB 89 67 45 23 01 EF CD AB 89 67 45 23 01 also in Little Endian. Somit ist es nun einfach die gesetzten Bits zu ermitteln, zB. mit der Assembleranweisung BT = BitTest.

Zitat:
und warum ist der Exponent 1011b?
1011 ist binär die dezimale Zahl 11. Das abschließende "b" zeigt an das die Zahl binär dargestellt wurde und nicht "h" hexadezimal oder "d" dezimal oder "o" oktal.

Zitat:
Und noch mal kurz zum Verständnis: Egal ob das Bit 0 oder 1 ist, T wird bei jedem Schritt quadriert, dagegen wird T auch noch verdoppelt, wenn das Bit 1 ist, bzw. es bleibt so wie es ist, wenn das Bit 0 ist. Richtig?
Hm, weiß ich doch nicht ?!? Spaß beiseite, du solltest dich jetzt in die Mathematik und Computeralgebra einarbeiten. D.h. du musst verstehen was Zahlensysteme wie Hexadeziaml und Binär bedeuten, wie Computer Zahlen verarbeiten und speichern, und eben einfach mal die Formel ((B^2)^2 * B)^2 * B mathematisch/algorithmisch analysieren. Dann wirst du sehen das bei einer Rechts nach Links, bzw. Oben nach Unten Bitauswertung des Exponentens das oberste gesetze Bit ignoriert wird und anschließend exakt Ln2(Exponent) -1 mal eine Quadierung und Hammingweight(Exponent) -1 mal eine Multiplikation fällig wird. Hammingweight() ist die Anzahl der auf 1 gesetzten Bits einer Zahl.

Zitat:
dagegen wird T auch noch verdoppelt, wenn das Bit 1 ist
Falsch, T wird mit der Basis multipliziert. Will man 2^y mod z ausrechnen, dann und nur dann wird T verdoppelt. Wird aber x^y mod z dann wird T ver'x'facht.


Ganz wichtig ist es, und das meine ich nicht abwertend oder überheblich, für solche Programmierungen zu wissen was der Computer und der Algorithmus macht. Du musst dir also unbedingt bestimmtes Grundlagenwissen aneigenen.

Dazu empfehle ich dir das Buch "Handbook of Applied Cryptography" von Menezes, van Oorschot, Vanstone ISBN 0-8493-8523-7.

Man könnte auch auf Donald Knuths Standardwerk "The Art of Computer Programming" Kapitel 4 "Arithmetic" hinweisen, ich persönlich finde es aber nicht ausreichend und veraltet. Trotzdem will ich's hier nicht verschweigen, da öfters an anderen Stellen darauf hingewiesen wird.

Gruß Hagen
  Mit Zitat antworten Zitat