2012-09-13 53 views
4

我得到了(16進制數)以下HMAC密鑰:簽訂字符串HMAC-MD5用C#

52320e181a481f5e19507a75b3cae4d74d5cfbc328f7f2b738e9fb06b2e05b55b632c1c3d331dcf3baacae8d3000594f839d770f2080910b52b7b8beb3458c08

我需要註冊這個字符串:

1100002842850CHF91827364

的結果應該是(十六進制格式):

2ad2f79111afd818c1dc0916d824b0a1

我有以下代碼:

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); 

但是,我沒有得到的結果。我究竟做錯了什麼?

回答

8
與關鍵HMAC MD5哈希時

 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();