Signing a string using HMAC-MD5 with C #

I received the following HMAC key (in hexadecimal format):

52320e181a481f5e19507a75b3cae4d74d5cfbc328f7f2b738e9fb06b2e05b55b632c1c3d331dcf3baacae8d3000594f839d770f2080910b52b7b8beb3458c08

I need to sign this line:

1100002842850CHF91827364

The result should be like this (in hexadecimal format):

2ad2f79111afd818c1dc0916d824b0a1

I have the following code:

string key = "52320e181a481f5e19507a75b3cae4d74d5cfbc328f7f2b738e9fb06b2e05b55b632c1c3d331dcf3baacae8d3000594f839d770f2080910b52b7b8beb3458c08"; string payload = "1100002842850CHF91827364"; byte[] keyInBytes = Encoding.UTF8.GetBytes(key); byte[] payloadInBytes = Encoding.UTF8.GetBytes(payload); var md5 = new HMACMD5(keyInBytes); byte[] hash = md5.ComputeHash(payloadInBytes); var result = BitConverter.ToString(hash).Replace("-", string.Empty); 

However, I do not get the result. What am I doing wrong?

+4
source share
2 answers

Instead of this:

 byte[] keyInBytes = Encoding.UTF8.GetBytes(key); 

you need to convert the key from the hex string to an array of bytes. Here you can find an example:

How to convert byte array to hexadecimal string and vice versa?

+3
source

when hashed with the HMAC md5 key

  var data = Encoding.UTF8.GetBytes(plaintext); // key var key = Encoding.UTF8.GetBytes(transactionKey); // Create HMAC-MD5 Algorithm; var hmac = new HMACMD5(key); // Compute hash. var hashBytes = hmac.ComputeHash(data); // Convert to HEX string. return System.BitConverter.ToString(hashBytes).Replace("-", "").ToLower(); 
+8
source

Source: https://habr.com/ru/post/1434080/


All Articles