我在维基百科上使用 Md5 C 代码
int main(int argc, char **argv) {
if (argc < 2) {
printf("usage: %s 'string'\n", argv[0]);
return 1;
}
char *msg = argv[1];
size_t len = strlen(msg);
// benchmark
int i;
for (i = 0; i < 1000000; i++) {
md5(msg, len);
}
//var char digest[16] := h0 append h1 append h2 append h3 //(Output is in little-endian)
uint8_t *p;
// display result
p=(uint8_t *)&h0;
printf("%2.2x%2.2x%2.2x%2.2x", p[0], p[1], p[2], p[3], h0);
p=(uint8_t *)&h1;
printf("%2.2x%2.2x%2.2x%2.2x", p[0], p[1], p[2], p[3], h1);
p=(uint8_t *)&h2;
printf("%2.2x%2.2x%2.2x%2.2x", p[0], p[1], p[2], p[3], h2);
p=(uint8_t *)&h3;
printf("%2.2x%2.2x%2.2x%2.2x", p[0], p[1], p[2], p[3], h3);
puts("");
return 0;
}
那就是代码。我已经了解了它的工作原理,我需要将 MD5 的结果转换为字符串。这可能吗?
基本上我需要转换 p=(uint8_t *)&h0; 它们中的每一个都连接到一个 char[] 并将它们连接起来,换句话说,将整个 MD5 代码放在一个 char[] 中。这是正确的/可能的吗?
昨天我花了一整天的时间来找到这个,我得到的最好的结果是如何使用 sprintft 转换 unit32_t,它确实有效。但对于 unit8_t 它没有。