1
我使用維基百科的MD5的C代碼MD5轉化uint8_t爲字符串
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;
}
這是code.I已經有一定的瞭解它是如何工作的,我需要改造將MD5的結果轉換爲字符串。 這可能嗎?
基本上我需要將p =(uint8_t *)&h0;中的每一個轉換爲char []並將它們連接,換言之,將整個MD5代碼放在一個char []中。這是正確的/可能的嗎?
我花了整整一天yestarday綁定找到這個和我得到的最好的是如何使用sprinft trasform unit32_t,它確實有效。但是對於unit8_t而言並非如此。
所以,如果我做的sprintf(緩衝區 「%02X%02X%02X%02X」,P),它的工作原理? – Alessandroempire 2013-03-14 12:24:26
是的,它應該做的。 – 2013-03-14 12:26:03
問題:緩衝區應該有多大,以便8位可以複製到它? – Alessandroempire 2013-03-14 12:30:17