RSA
Publié : dim. 20/nov./2005 23:16
Le tout étant relativement complexe, je mets par petits bouts
.
1ère partie : La création des clés :
J'espère ne pas avoir fait d'erreurs
.

1ère partie : La création des clés :
J'espère ne pas avoir fait d'erreurs

Code : Tout sélectionner
Procedure PrimeEuler(Maximum)
Repeat
n = Random(Maximum)
Until n > 1 And n <> 41
ProcedureReturn n*n - n + 41
EndProcedure
Ret.s = Chr(13)+Chr(10)
Restart :
StT = ElapsedMilliseconds()
Start :
Repeat
p = PrimeEuler(208)
Until p > 128
Repeat
q = PrimeEuler(208)
Until q <> p And q > 128
n.l = p*q
qn.l = (p-1)*(q-1)
Repeat
e = Random(qn)
Until qn%e > 0
TmpNe = 1
d = 1
Euler = n - p - q + 1
Repeat
TmpNe = TmpNe + 1
d = Round(TmpNe * Euler / e, 1)
If TmpNe > 20
Goto Start
EndIf
Until ((d * e) % Euler) = 1
EnT = ElapsedMilliseconds()
rep = MessageRequester("Done !", "Start time : "+Str(StT)+Ret+"End time : "+Str(EnT)+Ret+"Done in "+Str(EnT-StT)+" ms => "+Str((EnT-StT)/1000)+" s"+Ret+"p="+Str(p)+", q="+Str(q)+Ret+"n="+Str(n)+", e="+Str(e)+", d="+Str(d)+Ret+"Restart ?", #PB_MessageRequester_YesNo | #MB_ICONQUESTION)
If rep = 6
Goto Restart
EndIf
End