2014-11-05 36 views
-1

我一直在嘗試這一段時間,並不斷得到一個錯誤的哈希值。我知道這是錯誤的,因爲我已經檢查了打擊網上HMAC計算器爲什麼散列值錯誤?

unsigned char data[]="data"; 
unsigned char key[MD5_DIGEST_LENGTH]; 
MD5(data, strlen(data), key); 

unsigned char* t; 
t=HMAC(EVP_md5(),key,16,data, 16,NULL,NULL); 

for(i = 0; i < 20; i++) 
{ 
    sprintf(&mdString[i*2], "%02x", t[i]); //totally wrong value 
} 
+0

你能否在這種情況下添加你認爲是正確的HMAC? – 2014-11-05 22:31:09

+0

是不是HMAC-MD5確定性?正確的意思是,當我在線HMAC計算器上運行時,獲得的值相同 – w774 2014-11-05 22:33:18

+0

鍵和數據都等於「數據」? – 2014-11-05 22:34:06

回答

0

爲了得到一個HMAC匹配的在線發電機組,這是一個簡單;

unsigned char* data = "data"; 
unsigned char* key = "key"; 
unsigned char* t; 

t = HMAC(EVP_md5(), key, strlen(key), data, strlen(data), NULL, NULL); 

for(i = 0; i < 16; i++) 
{ 
    sprintf(&mdString[i*2], "%02x", t[i]); 
} 

在你的榜樣,你在關鍵使用MD5計算HMAC,這是不是在線發電機做之前。當然,如果您的密鑰或數據不是普通的以null結尾的字符串,則需要用實際長度替換strlen調用。

相關問題