Я использую код 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 в одном знаке []. Это правильно или возможно?
Я потратил весь день на привязи, чтобы найти это, и лучшее, что я получил, - это как преобразовать unit32_t с помощью sprinft, и он действительно работает. но для unit8_t это не так.
Так что, если я делаю Sprintf (буфер, "% 02x% 02x% 02x% 02x", р), она работает? – Alessandroempire
Да, он должен это сделать. –
Вопрос: насколько большой должен быть буфер, чтобы 8 бит мог его копировать? – Alessandroempire