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