Programación Web y Scripting > PHP
Probremas con encriptacion md5 en php
sayri:
que tal
tengo un problema con la encriptacion de contraseña
bueno hazta la hora de registrar la contraseña encriptada de un usuario en la bd funciona normal, el problema es cuando quiero hacer la validacion de usuario, no me valida la contraseña encriptada
* cuando hago la comprobacion con (ECHO) de la contraseña encriptada que introdusco en la validacion de usuario me doy con la sorpresa que es distinta a la que gurde en la base de datos
este es el codigo que utilizo para guardar
$conti = md5($contra);
$sql="INSERT INTO users(id_per,usuario,contraseña,level)"."VALUES ('$empre','$usuarios','$conti','$select')";
y este el el codigo que uso para la validacion
$contia = md5($pass);
$result = mysql_query("SELECT level FROM users WHERE usuario LIKE '%$login%' and contraseña LIKE '%$contia%'" , $link);
$num=mysql_numrows($result);
mysql_close($link);
$i=0;
while ($i < $num) {
$level=mysql_result($result,$i,'level');
if($level==2){
echo "Inicio de Sesion Exitosa como Administrador de la Pagina";
}elseif($level==1){
echo "Inicio de Sesion Exitoso";
}
elseif($level==3){
echo "Inicio de Sesion Exitoso";
}
else{
echo "No Existe el Usuario ó La Contraseña es Incorrecta";
}
$i++;
}
RadicalEd:
una encriptación md5 genera +/- cuarenta y tantos carácteres, debes tener en cuenta que tamaño tiene el campo en la DB a la hora de guardar
sayri:
el campo contraseña de la bd inicialmente lo puse con 8, pero despues lo cambie a 30 y sige el mismo problema
RadicalEd:
--- Cita de: "sayri" ---el campo contraseña de la bd inicialmente lo puse con 8, pero despues lo cambie a 30 y sige el mismo problema
--- Fin de la cita ---
ahí está tu problema, lo que te dije arriba, debes por lo menos cambiar el tamaño a 50, ya que la contraseña convertida por el md5 sería algo así "cc6a8db850b520edefed4f8d10a5b106", acá hay 32 carácteres, pero las he visto más largas.
shadow_rev:
--- Cita de: "Edo" ---[...] debes por lo menos cambiar el tamaño a 50, [...]
--- Fin de la cita ---
Con 50 es suficiente, pero yo usaría SHA1 para "encriptar" las contraseñas, que es mucho más fuerte que MD5 y genera una cadena mas larga (de 40 dígitos hexadecimales, según PHP, contra 32 que genera MD5).
Y otra cosa que veo en el código: cambia contraseña LIKE '%$contia%'" por contraseña = '$contia'" o contraseña LIKE '$contia'" (sin los %), para que compares cadenas exactas y no cadenas que contengan $contia.
Como nota adicional, pongo encriptar entre comillas porque en este caso no esta bien empleado el término. Tanto MD5 como SHA1 lo que hacen es calcular el hash de la cadena en hexadecimal usando el algoritmo que lleva su nombre, y dado que el hash no tiene reversa (no se puede obtener la cadena original a partir del hash), pues no es una encriptación en toda regla (la encriptación si tiene reversa).
Navegación
[#] Página Siguiente
Ir a la versión completa