2014-11-05 57 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调用。