Menú Principal

MD5...

Iniciado por Xaina, 17 Mayo 2008, 19:39 PM

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

Xaina

Buenas, estaba buscando el algoritmo del MD5 en php y me encontre que se puede usar  directamente en Mysql usando esta linea:

Insert into usuarios (nick,clave) values ('usuario',MD5('contraseña'));

todo bien... pero... sabiendo que la desencriptación es imposible en este caso, si deseo hacer una comparación desde php cuando un supuesto usuario introduzca la contraseña ¿como lo haria? lei que pueden haber diferencias entre la cifrado hecha desde php a la que usa el mysql.

Entre los diferentes tipos de encriptacion que trae el mysql (según lo que lei) ¿cual es el mas seguro? --> MD5, SHA o SHA1, AES, etc.

Edito:

bueno, investigando encontre esto:

Código (php) [Seleccionar]

<?
   $contraseña = md5 ( $contraseña );
?>
ç

al parecer eso basta para cifrar la contraseña, pero... ¿habra alguna diferencia entre la cifrado elaborada en php a la realizada directamente en mysql?

¡saludos! Xaina

Ertai

Exacto, para hacer un login tendrias que usar la funcion en php md5() para cifrar la contraseña usada y compararla con el hash (la contraseña en md5) que tienes guardada en la base de datos.

Que yo sepa, no tendria que haber ninguna diferencia entre el MD5 de MySQL y el de PHP, de hecho, yo uso los dos y son identicos (sino, perderia toda la gracia del sistema).

No hay ninguno seguro al 100%, pero seguramente, el más difícil de romper por fuerza bruta, sea SHA1.

Suerte.
Si la felicidad se comprara, entonces el dinero sería noble.


void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}

Xaina

Muchas gracias por responder Ertai, me dejas un poco más clara, llegue leer en otro foro, el caso de un joven que usaba los dos metodos antes mencionado y en la comparación no funcionaba a pesar de usar la misma contraseña y el problema según él, era que una de las dos tenia caracteres en mayuscula que el otro hash no tenia. Ahora no se si eso sea verdad...

Seguire investigando quizás use SHA1, espero que tambien se pueda usar en php al igual que MD5, incluso estudio la posibilidad de usar el JS para cifrar la contraseña antes de enviarla al servidor para su comparación.

Xaina

Ertai

Hay otros pequeños trucos para incrementar la seguridad, ya que te veo muy en el tema.

Por ejemplo, puedes hacer un doble hash

Código (php) [Seleccionar]
$foo = md5(sha1($pass));

Otra idea es poner, por ejemplo, un prefijo y sufijo

Código (php) [Seleccionar]
$foo = md5(sha1("87sdfv-´+'" . $pass . "sd34+435´"));

Saludos  ;)
Si la felicidad se comprara, entonces el dinero sería noble.


void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}