Foros del Web » Programando para Internet » PHP »

Algoritmo MD5

Estas en el tema de Algoritmo MD5 en el foro de PHP en Foros del Web. ola tios, vereis tngo una base de datos donde ay un campo llamado "password", el cual esta en MD5, q es lo q tengo q ...
  #1 (permalink)  
Antiguo 25/09/2003, 04:54
Avatar de sith  
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 333
Antigüedad: 14 años, 4 meses
Puntos: 0
Algoritmo MD5

ola tios, vereis tngo una base de datos donde ay un campo llamado "password", el cual esta en MD5, q es lo q tengo q acer para desencriptarlo, para poder compararlo con el pass q mete el usuario para q verifique si es correcto?
  #2 (permalink)  
Antiguo 25/09/2003, 05:07
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

MD5 no se puede "desencriptar". Es un algoritmo de una sola direccion. Por eso es tan seguro, porque no se puede "desencriptar" (realmente no encripta, sino que calcula un "hash").

Pero tampoco es necesario para realizar la comparacion. Lo que debes hacer es hallar el md5 del password que ha metido el usuario y comparar el valor obtenido con el de la base de datos.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 25/09/2003, 06:12
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
Es decir, comparar HASHes :P tu guardas en tu BBDD el Hash del pass y lo comparas con el de tu BBDD jeje pero weno de todas maneras el algoritmo MD5 es vulnerable via FUERZA BRUTA!!!!! por que si mal no recuerdo los pass de Linux normalmente suelen estar encriptados con MD5 y se podian descifrar via fuerza bruta ... pero weno es lo de menos :p
__________________
Usuario registrado de Linux #288725
  #4 (permalink)  
Antiguo 25/09/2003, 09:38
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Pues claro. Con fuerza bruta se puede desencriptar todo. Lo unico malo es el tiempo que se tarda. Aun asi, con fuerza bruta no necesariamente sacas el pass original. Puedes obtener una cadena que genere el mismo hash del pass original. Total, solo probando un maximo 2^128 cadenas (que cada una genera un hash md5 unico), encontrarias el "sinonimo" del pass original.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 25/09/2003, 10:39
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
JEJE pozi :P jeje
__________________
Usuario registrado de Linux #288725
  #6 (permalink)  
Antiguo 26/09/2003, 11:28
Avatar de sith  
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 333
Antigüedad: 14 años, 4 meses
Puntos: 0
muxas gracias x la splicacion colegas
  #7 (permalink)  
Antiguo 26/09/2003, 12:06
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
Cita:
Mensaje Original por josemi

Pero tampoco es necesario para realizar la comparacion. Lo que debes hacer es hallar el md5 del password que ha metido el usuario y comparar el valor obtenido con el de la base de datos.
claro, pasa el pass que el user ponga en el formulario, por el hash MD5 y los comparas, si son iguales pues ale, correcto y pa dentro.

Código PHP:
<?php


if (pass2 != md5($_POST['password'])) { //1º, saco el pass del form, tipo POST, encripto el pass a MD5 y lo compruebo con el de la BD pass2

echo "password no valido";

exit;
//terminamos
 
}

//salta si son iguales y seguimos con el script

?>
maestros., eso estaria bien?

__________________
3w.valenciadjs.com
3w.laislatv.com
  #8 (permalink)  
Antiguo 26/09/2003, 15:49
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Bueno, siempre y cuando estes seguro que ambos md5 coinciden en las mayusculas/minusculas. Es que me paso que una vez usaba una funcion md5 de PHP y comparaba el valor con el md5 de MySQL del mismo valor y la comparacion con == me fallaba. Y estaba seguro que eran la misma clave. Asi que haciendo la tipica prueba de echo $pass1."=".$pass2; me di cuenta que una estaba en mayusculas y la otra en minusculas. Asi que desde ese momento siempre hago la comparacion con strtolower():
Código PHP:
if (strtolower($pass2) != strtolower(md5($_POST['password']))) 
O si no usar para todo la misma funcion md5(). Insertar en MySQL con la MD5() de MySQL y hacer la comparacion en la consulta SQL "WHERE pass=MD5({$_POST['pass']}".

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:58.