【发布时间】:2013-03-30 07:50:10
【问题描述】:
我正在尝试使用来自http://www.arp.harvard.edu 的原始/未触及的 md5.h 和 md5c.c 为字符串 "Hello World" 生成 MD5 哈希。但我的结果与我测试过的所有 md5 在线工具不同。这段代码有什么问题?谢谢。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "md5.h"
void MD5hash(unsigned char *data, unsigned int dataLen, unsigned char *digest) {
MD5_CTX c;
MD5Init(&c);
MD5Update(&c, data, dataLen);
MD5Final(digest, &c);
}
int main(int argc, const char * argv[]) {
unsigned char digest[16];
const char *s = "Hello World";
unsigned int l = (unsigned int)strlen(s);
MD5hash((unsigned char *)s, l, digest);
for(int i = 0; i < 16; ++i)
printf("%02x", digest[i]);
return 0;
}
// My result: f2877a72c40494318c4b050bb436c582
// But online tools output: b10a8db164e0754105b7a99be72e3fe5
【问题讨论】:
-
附带说明 - 我已经根据 OpenSSL 的 MD5 实现编译了您的代码 - 它按预期工作!所以确实
md5.c你尝试使用可能只是以某种方式被破坏。