caussatjerome à créer une procédure de calcul d'empreinte "Keyed Secure Hash Algorithme 1" (HMAC-SHA1) que tu peux implémenter.
Code : Tout sélectionner
Procedure.s hextoasc(entrer.s)
For a = 1 To Len(entrer.s) Step 2
sortie.s+Chr(Val("$"+Mid(entrer.s,a,2)))
Next a
ProcedureReturn sortie.s
EndProcedure
Procedure.s hmac_sha1(key.s,msg.s)
If(Len(key.s)>64); Si key est plus grand que 64 octets...
key.s=SHA1Fingerprint(@key.s,Len(key.s))
key.s=hextoasc(key.s)
EndIf
key.s=LSet(key.s,64,Chr(0));Il faut que la clef soit de 64 octets, on ajoute donc autant de fois que necessaire le caractères ASCII 0.
ipad.s=LSet(ipad.s,64,Chr($36));On prépare la variable ipad (64 fois le caractère $36)
opad.s=LSet(opad.s,64,Chr($5c));On prépare la variable opad (64 fois le caractère $5c)
For a=1 To 64
opadt.s+Chr(Asc(Mid(opad,a,1))!Asc(Mid(key,a,1))); on prépare la variable opadt (opad XOR key)
ipadt.s+Chr(Asc(Mid(ipad,a,1))!Asc(Mid(key,a,1))); on prépare la variable ipadt (ipad XOR key)
Next a
ipadt.s+msg.s;on ajoute le message a ipad.
hipad.s=SHA1Fingerprint(@ipadt.s,Len(ipadt.s))
opadt.s+hextoasc(hipad.s)
hopad.s=SHA1Fingerprint(@opadt.s,Len(opadt.s))
ProcedureReturn hopad.s
EndProcedure
Key$ = "tacledecodage"
For i = 1 To 100
hmac.s=hmac_sha1(key$,Str(i))
Debug hmac
Next
Code : Tout sélectionner
hmac.s=hmac_sha1(key$,"123345674589")
Debug hmac
Le post d'origine : http://www.purebasic.fr/french/viewtopi ... 54#p153054