je poste le code d'une procedure de calcul d'empreinte "Keyed Secure Hash Algorithme 1" (HMAC-SHA1)", sa peut toujours servir
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$=InputRequester("Programme de test HMAC SHA1 :","KEY :","")
Message$=InputRequester("Programme de test HMAC SHA1 :","Message :","")
hmac.s=hmac_sha1(key$,message$)
MessageRequester("Resultat :",hmac.s)
End
Bon codage à tous