C:MD5给出了垃圾

时间:2012-02-20 09:58:35

标签: c macos hash md5

我正在使用Peter Deutsch's implementation of MD5来实施简单的密码检查。我这样用它:

md5_state_t md;
char *in = "Hello World";
char *out[16];

md5_init(&md);
md5_append(&md, in, strlen(in));
md5_finish(&md, out);

printf("In:  %s\n", in);
printf("Out: %s\n", out);

问题是,我得到了这样的结果:

In:  Hello World
Out: ?
??d?uA????.??

有没有人知道这里出了什么问题?

1 个答案:

答案 0 :(得分:3)

MD5哈希是一个16字节的二进制blob。您不能将其打印为字符串。打印它,例如以十六进制表示:

md5_state_t md;
char *in = "Hello World";
char out[16];
int i;

md5_init(&md);
md5_append(&md, in, strlen(in));
md5_finish(&md, out);

printf("In:  %s\n", in);
printf("Out: ");
for(i = 0; i < 16: i++) 
   printf("%02X", out[i]);
puts("");

请注意,以上更改out也是char,它不能是char *