Ver Mensaje Individual
  #18 (permalink)  
Antiguo 29/11/2005, 09:01
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
MI campo clave es de 6 caracteres. y pues si cuando guarde mi clave " Peru " se genero "32e841". esto es por lo que esta encriptada.
Si tu guardas tus contraseñas encriptadas con MD5() . .como este generar un string (cadena) de 32 caracteres .. minimo tendrá que ser un campo tipo CHAR(32) (no hace falta que sea VARCHAR . pues no es "variable" siempre son 32 caracteres alfanuméricos lo que genera un MD5() de una cadena dada).

Todo este sistema se trata de que tu al codificar tu contraseña en MD5() .. así la guardas en tu BD (8ads9f879asdf879dfsd987) .. cuando tu usuario hace "login" en tu sistema . tu le aplicas MD5() a lo que ingrese tu usuario (obteniendo 8ads9f879asdf879dfsd987 o similar) y eso es lo que usas para hacer tu consulta SQL a tu BD ..

Código PHP:
$sql="SELECT * FROM usuarios WHERE usuario='".$_POST['usaurio']."' AND password='".md5($_POST['password'])."'"
El caso es que el "hash" MD5() genera siempre lo mismo de una misma cadena origen .. Por eso se trata de que en tus Basde de datos guardes ese "MD5()" (cadena) generada y cuando deseas "validar" si el usuario está usando la misma password que usó para el registro, tu vuelvese a realizar el mismo proceso y lo comparas con lo que en su momento de registro del usuario lo generastes sabiendo que -siempre- dará lo mismo de la misma cadena origen.

Por supuesto .. si tu guardas sólo "6" caracteres de los 32 que arroja pasar un MD5() a una cadena cualquiera (string) .. esa "comparación" en tu consulta SQL -nunca- coincidirá. Por eso, lo primero que tienes que hacer es aumentar el tamaño de ese campo de contraseña que usas a 32.

Un saludo,

Última edición por Cluster; 29/11/2005 a las 09:07