rekursion unformung

Gast #5656495
Lesenswert?

Hallo,

Ich benötige etwas Hilfe und zwar hätte ich gern die Iterative Umformung 
von. Mir ist klar das ich ne schleife reinbauen muss um den 
Rekursionsaufruf wegzubekommen:
1
def inv(a, k):
2
    if k==1:
3
        return 1
4
    m=1<<k    # 2**k
5
    a=a % m
6
    r=inv(a, (k+1)//2)
7
    return (2-a*r) * r % m
Moderator #5656977
Lesenswert?

Die rekursive Lösung ist IMHO dennoch die elegantere, und ich hatte
einige Mühe, den nichtrekursiven Algorithmus so hinzubiegen, dass er
ähnlich effizient wie der rekursive ist. Auch der Stackverbrauch ist
hier kaum ein Argument gegen die Rekursion, da er nur mit log2(k) bzw.
log2(log2(m)) wächst, angesichts des Speicherverbrauchs von m also
vernachlässigbar ist.
#5657781
Lesenswert?

Falls es um Krypto geht, dann sollte man sich u.U. ein paar Paper dazu 
ansehen (u.a. auch auf Wikipedia verlinkt), die auch die 
Seitenkanalresistenz und Fehlersicherheit betrachten u.a.:

The Montgomery Powering Ladder
https://cr.yp.to/bib/2003/joye-ladder.pdf

Efficient and Side-Channel Resistant RSA Implementation for 8-bit AVR 
Microcontrollers
http://www.caad.arch.ethz.ch/noolab/files/external/conferences/IoT2010_proceedings/pdf/WS1/WS1_6.%20seciot2010_submission_12_final_v0.pdf#page=8

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren