funcion md5 no funciona bien en linux (pero si en windows)

Iniciado por envai, 26 Febrero 2011, 15:04 PM

0 Miembros y 1 Visitante están viendo este tema.

envai

Hola, he probado ya varios códigos en c++ para poder utilizar la función de calcular md5 de strings y ficheros.
Pues mi problema es que en windows, el código compilado, me devuelve un md5 correcto:
por ejemplo de a, devuelve > 0cc175b9c0f1b6a831c399e269772661
y en linux, a, devuelve > 793a9bc07e209b286fa416d6ee29a85d

Ocurre lo mismo si en lugar de pasarle un string, le paso un fichero.

Este seria uno de los códigos: http://bobobobo.wordpress.com/2010/10/17/md5-c-implementation/

Alguna idea de porque me falla en linux? (mete algún carácter al final de las cadenas, o algo raro)

Gracias de antemano!

Leber

Yo apañe esta, pero para que funciones tienes que tener las librerias de desarrollo de ssl: libssl-dev

static char *convert_md5(char const *pwd)
{
static char md5[34];
char c[3];
    MD5_CTX context;
    int i;
    unsigned char digest[16];
    unsigned int len = strlen (pwd);
   
MD5_Init(&context);
MD5_Update (&context, pwd, len);
MD5_Final(digest, &context);
memset(md5, 0, sizeof(md5));

for (i = 0; i < 16; i++) {
snprintf(c, 3, "%02x", digest[i]);
strncat(md5, c, sizeof(md5)-1);
}
   
return md5;
}


Como ves, el unico parametro que recibe es la cadena que quieres convertir a md5, y lo que te devuelve es el hash.

Espero que te ayude, saludos
"Solo los tontos carecen de preucupaciones." Johann Wolfgang Goethe