Bonjour,

J'ai besoin de votre aide pour une problématique que j'ai sur un code VBA. (je suis débutant)

Mon code permet, via une fonction, d'hacher une donnée avec une clé secrète via l'algorithme HMAC SHA1.

Le problème est que la clé (variable String) peut contenir des caractères spéciaux, or l'encodage UTF8 transforme ces caractères (exemple "«" devient "«").
Et du coup, lorsque la fonction convertit la caractère sur 8 bits ça donne pas du tout ce que je souhaite.

En changeant, l'UTF8 par l'Unicode (Set asc = CreateObject("System.Text.UnicodeEncoding"), je retrouve le bon code de caractère mais sur 16 bits mais je le voudrais sur 8 bits... des idées ?



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public Function HEX_HMACSHA1(ByVal sTextToHash As String, ByVal sSharedSecretKey As String)
Dim asc As Object, enc As Object
Dim TextToHash() As Byte
Dim SharedSecretKey() As Byte
 
Set asc = CreateObject("System.Text.UTF8Encoding")
Set enc = CreateObject("System.Security.Cryptography.HMACSHA1")
 
 
TextToHash = asc.Getbytes_4(sTextToHash)
SharedSecretKey = asc.Getbytes_4(sSharedSecretKey)
enc.Key = SharedSecretKey
 
Dim Bytes() As Byte
Bytes = enc.ComputeHash_2((TextToHash))
HEX_HMACSHA1 = ConvToHexString(Bytes)
Set asc = Nothing
Set enc = Nothing
 
End Function