Forum: PC-Programmierung mathe/informatik S=x^n mod b effektiv berechnen


von jo (Gast)


Lesenswert?

Hallo,
für die Programmierung einer digitalen Signatur benötige ich die 
Berechnung

S=x^n mod b
n,b aus N

Da n sehr großwerden kann, möchte ich einen Algorithmus ggfs 
sochastischer Algorithmus verwenden. Fälle Euch da einer ein oder ein 
Stichwort zum Suchen?

MFG

jo

von D. I. (Gast)


Lesenswert?


von Johann L. (gjlayde) Benutzerseite


Lesenswert?

n wird nicht größer als b [1], für φ siehe [2]:

Da b für kryptographische Zwecke verwendet wird, hat es keine kleinen 
Teiler, daher sind x und b idR teilerfremd. Mit etwas Hirnschmalz geht 
es auch für (x,b)≠1. In diesem Falle faktorisiert man den unliebsamen 
Nullteiler raus und bekommt sogan ein noch kleineres b'.

Zur Berechnung der Potenz braucht man Grundarithmetik, also + und · mod 
b. Addition ist trivial. Multiplikation x·y per Schulmethode (indem man 
die Zahlen zu einem Basis B darstellt, zB B=2^32 oder B=2^31) ist 
machbar, liefert dann aber ein Zwischenergebnis in der Größenordnung b², 
das wieder mod b reduziert werden will.

Stattdessen kann man die Schulmultiplikation auch binär machen (B=2) und 
nach jedem Shift/jeder Addition reduzieren:
Dadurch bleiben die Zwischenergebnisse klein und die Reduktion des 
großen Endergebnisses entfällt.

In der Praxis wird man mehrere (Assembler) Implementierungen in einem 
CA-System vorhalten nebst einer Heuristik, welcher Algorithmus der beste 
ist.

Kombination verschiedener Verfahren ist möglich, insbesondere Karatsuba 
[3] ist leicht zu implementieren und gut zu kombinieren.

Schönhage-Strassen [4] ist erst ab mehreren 1000 Dezimalstellen besser, 
was schön verdeutlicht, daß Komplexität nicht alles ist und eine 
kleinere O-Konstanten bei höherer Komplexität bis in große 
Zahlenbereiche hinein durchaus einer besseren Komplexität überlegen sein 
kann.

[1] http://de.wikipedia.org/wiki/Satz_von_Euler
[2] http://de.wikipedia.org/wiki/Phi-Funktion
[3] http://de.wikipedia.org/wiki/Karatsuba-Algorithmus
[4] http://de.wikipedia.org/wiki/Schönhage-Strassen-Algorithmus

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.