Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB.NET: RSA: Potenssin jakojäännös

tnb [26.01.2004 00:25:17]

#

RSA salakirjoituksen ydin on funktio:
A=(P^d) mod n (P potenssiin d, jaetaan n:llä ja otetaan jakojäännös)
mikä tulee voida laskea todella isoilla d ja n-arvoilla.

Oheinen ohjelma ratkaisee ko. ongelman ja laskee double tarkkuuden luvuilla ko. salakirjoituskaavan (mikä ei nyt ole paljon mitään, kunhan vain esittelin algoritmin).

Listaus 1

Private Function Power_mod_N(ByVal P As Double, ByVal d As Double, ByVal n As Double) As Double
        'A = (P ^ D) Mod N , P pitää olla pienempi kuin N
        'A = (P^e2 * P^e2 * P^e3) Mod N where D= 2*e2+e3 , e3 on 1 tai 0
        'A = ((P^e2)mod N) * ((P^e2)mod N)) * ((P^e3)mod N))Mod N
        'rekursio luuppi kunnes exponentti on yksi
        ' koska P<N niin P^1 mod N = P
        Dim e2 As Double
        Dim e3 As Double
        Dim a2 As Double
        Dim a3 As Double
        Dim a4 As Double
        Dim a5 As Double

        e2 = d \ 2
        e3 = d - 2 * e2

        If e2 = 1 Then 'recursio loppuu
            a2 = P
        Else
            a2 = Power_mod_N(P, e2, n)  'recursio jatkuu
        End If

        If e3 = 1 Then
            a3 = P 'a3=P kun e3=1
        Else
            a3 = 1 ' P^0
        End If

        'A= (a2*a2*a3) mod N
        'A=((a2*a2)mod n * a3 )mod n
        a4 = a2 * a2
        a5 = a4 Mod n
        a4 = a5 * a3
        Power_mod_N = a4 Mod n
    End Function

tejeez [02.10.2004 17:47:52]

#

joo

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta