我正在使用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????.??
有没有人知道这里出了什么问题?
答案 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 *