Título: funcion md5 no funciona bien en linux (pero si en windows) Publicado por: envai en 26 Febrero 2011, 15:04 pm 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! Título: Re: funcion md5 no funciona bien en linux (pero si en windows) Publicado por: Leber en 26 Febrero 2011, 23:27 pm Yo apañe esta, pero para que funciones tienes que tener las librerias de desarrollo de ssl: libssl-dev
Código: 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 |