2014-11-05 3 views
-1

저는 잠시 동안 이것을 시도해 왔으며 잘못된 해시 값을 계속 가져 왔습니다. 내가 온라인 발전기 일치하는 HMAC를 얻으려면 온라인 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로 간주 할 항목을 추가 할 수 있습니까? –

+0

HMAC - MD5가 결정적이지 않습니까? 올바른 것은 내가 온라인 HMAC 계산기에서 실행할 때 얻는 값과 같습니다. – w774

+0

"데이터"와 키와 데이터가 모두 같습니까? –

답변

0

에 대해 그것을 확인했기 때문에이 잘못된 것을 알고, 그것으로 간단;

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

예를 들어, 온라인 생성기가 수행하지 않는 HMAC를 계산하기 전에 키에 MD5를 사용하고 있습니다. 물론 키 또는 데이터가 널 종료 문자열이 아닌 경우 strlen 호출을 실제 길이로 바꿔야합니다.

관련 문제