ウィキペディアで 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 コード全体を 1 つの char[] にまとめます。これは正しい/可能ですか?
私は昨日、これを見つけるために一日を費やしましたが、私が得た最高のものは、sprinft を使用して unit32_t を変換する方法であり、それは機能します。しかし、 unit8_t ではそうではありません。