Bonsoir à tous,

Je dois réaliser pour mon entreprise un fichier Excel où dans un des onglets je dois hacher un message via l'algorithme Hmac SHA1 avec 2 sources de données : 1ère = variable de type texte sur 32 caractères (exemple FDFDD45F4D56G4F4FDGFG54G4F564545) | 2ème : clé secrète en hexadécimal sur 32 caractères aussi (exemple : ABCCF6215CCD5873384BCDFFC0241288).

Je dois ensuite hacher le tout via l'algorithme en hexa : résultat du type --> b7c11d274576c9e8cea08c411228c9610da15ec5

J'ai réussi à trouver un code vba sur internet mais le problème est que les 2 variables d'entrée sont du type texte hors la clé secrète, dans mon cas, est en hexa.
Je n'arrive pas du tout à changer cela, auriez vous des idées ? (je ne suis pas spécialisé en informatique d'où mes lacunes..)

Voici ce j'ai trouvé :

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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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
    Dim SecretKey As String
 
    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
 
 
Private Function ConvToHexString(vIn As Variant) As Variant
    'Check that Net Framework 3.5 (includes .Net 2 and .Net 3 is installed in windows
    'and not just Net Advanced Services
 
    Dim oD As Object
 
    Set oD = CreateObject("MSXML2.DOMDocument")
 
      With oD
        .LoadXML "<root />"
        .DocumentElement.DataType = "bin.Hex"
        .DocumentElement.nodeTypedValue = vIn
      End With
    ConvToHexString = Replace(oD.DocumentElement.Text, vbLf, "")
 
    Set oD = Nothing
 
End Function
Merci d'avance et bonne soirée.

Jérémy