SoloCodigo

Programación Web y Scripting => PHP => Mensaje iniciado por: sayri en Miércoles 9 de Febrero de 2011, 18:14

Título: Probremas con encriptacion md5 en php
Publicado por: sayri en Miércoles 9 de Febrero de 2011, 18:14
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++;
}
Título: Re: Probremas con encriptacion md5 en php
Publicado por: RadicalEd en Miércoles 9 de Febrero de 2011, 18:23
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
Título: Re: Probremas con encriptacion md5 en php
Publicado por: sayri en Miércoles 9 de Febrero de 2011, 18:37
el campo contraseña de la bd inicialmente lo puse con 8, pero despues lo cambie a 30 y sige el mismo problema
Título: Re: Probremas con encriptacion md5 en php
Publicado por: RadicalEd en Miércoles 9 de Febrero de 2011, 18:40
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
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.
Título: Re: Probremas con encriptacion md5 en php
Publicado por: shadow_rev en Miércoles 9 de Febrero de 2011, 23:04
Cita de: "Edo"
[...] debes por lo menos cambiar el tamaño a 50, [...]
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 (http://php.net/sha1), 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).
Título: Re: Probremas con encriptacion md5 en php
Publicado por: sayri en Jueves 10 de Febrero de 2011, 18:10
Cita de: "Edo"
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.

si ese fue el problema, ahora si hace la validacion

Cita de: "shadow_rev"
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).

bueno revisare, haver que tal es

Cita de: "shadow_rev"
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.

.
bueno no me havia percatado de ese detalle, lo cambiare, Gracias por la correccion