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 Functionjoo
Aihe on jo aika vanha, joten et voi enää vastata siihen.