Variable hexadécimale et hachage des données
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:
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