Próbuję wygenerować skrót MD5 dla ciągu znaków "Hello World" przy użyciu oryginalnego/nietkniętego pliku md5.h i md5c.c z http://www.arp.harvard.edu. Ale mój wynik różni się od wszystkich narzędzi online md5, które przetestowałem. Co jest nie tak z tym kodem? Dziękuję Ci.Powracanie niewłaściwego skrótu MD5 w C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "md5.h"
void MD5hash(unsigned char *data, unsigned int dataLen, unsigned char *digest) {
MD5_CTX c;
MD5Init(&c);
MD5Update(&c, data, dataLen);
MD5Final(digest, &c);
}
int main(int argc, const char * argv[]) {
unsigned char digest[16];
const char *s = "Hello World";
unsigned int l = (unsigned int)strlen(s);
MD5hash((unsigned char *)s, l, digest);
for(int i = 0; i < 16; ++i)
printf("%02x", digest[i]);
return 0;
}
// My result: f2877a72c40494318c4b050bb436c582
// But online tools output: b10a8db164e0754105b7a99be72e3fe5
Na marginesie - Mam skompilowany kod przeciwko implementacji MD5 OpenSSL - działa zgodnie z oczekiwaniami! Tak więc 'md5.c', którego spróbujesz użyć, może zostać po prostu złamane w ten czy inny sposób. –