Sto cercando di generare MD5 hash per una stringa "Ciao Mondo" utilizzando il md5.h originale/intatta e md5c.c da http://www.arp.harvard.edu. Ma il mio risultato differisce da tutti gli strumenti online md5 che ho testato. Cosa c'è di sbagliato in questo codice? Grazie.Tornando sbagliato hash MD5 in 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
Come nota a margine - che ho compilato il codice contro l'implementazione MD5 di OpenSSL - funziona come previsto! Quindi infatti 'md5.c' che si tenta di utilizzare potrebbe semplicemente essere rotto in un modo o nell'altro. –