0
我對c很新穎。我試圖用md5比較兩個文件。 我寫了一個函數,它應該返回散列值。但是,比較不同文件或緩衝區的值時,它表示它們具有相同的散列值。C爲不同的字符串獲得相同的哈希值openssl
unsigned char* getMD5(void *buffer, size_t bsize) {
EVP_MD_CTX *mdctx;
const EVP_MD *md;
unsigned char hashwert[EVP_MAX_MD_SIZE];
int hashwert_laenge;
OpenSSL_add_all_digests();
md = EVP_get_digestbyname("MD5");
mdctx = EVP_MD_CTX_create();
EVP_DigestInit_ex(mdctx, md, NULL);
EVP_DigestUpdate(mdctx, buffer, bsize);
EVP_DigestFinal_ex(mdctx, hashwert, &hashwert_laenge);
EVP_MD_CTX_destroy(mdctx);
return hashwert;
}
//in main...
char mess[] = "abc";
cahr mess2[] = "bcd";
if(strcmp(getMD5(mess, strlen(mess)),getMD5(mess2, strlen(mess2))==0) {
printf("euqal\n");
}else {
printf("not equal \n");
}
我總是得到緩衝區是平等的,即使他們不是。 Regards
是的,有一個警告,我用一個額外的緩衝區作爲參數,而不是返回來修復它。謝謝! – user1324258