2012-07-18 40 views
8

Estoy tratando de configurar un sistema de inicio de sesión, pero no puedo resolver un problema: PHP me está dando otra salida con md5(); de MySQL ...PHP md5() da salida diferente a continuación, MySQL md5

Por ejemplo, en PHP:

$password = md5("brickmasterj"); 
return $password; 

Devuelve:

3aa7b18f304e2e2a088cfd197351cfa8 

Pero el equivalente de MySQL me da una versión más corta:

3aa7b18f304e2e2a08 

¿Cuál es la ¿problema? ¿Y cómo trabajo con esto mientras verifico las contraseñas?

+0

¿Está Inserción/actualización o la selección de la salida del MD5 MySQL? Tengo la sensación de que esto se debe a que su Columna tiene un ancho/tamaño de solo 18 caracteres. – Gavin

Respuesta

8

Supongo que el problema de la longitud de la columna de la tabla, ajuste la longitud de campo de la contraseña de al menos 32

+0

a la derecha, se puede ver que el valor de mysql es el comienzo de la cadena php generada y también tiene 18 caracteres de longitud :) – mishu

+0

Gracias, ese era el problema, había un máximo en la longitud de la columna. – Jers

2

ninguna manera MySQL devuelve de una longitud de < 32. Si desea hacer una consulta sencilla como SELECT md5('brickmasterj'), lo verás. Ahora lo más probable es que inserte el valor en una columna que no sea lo suficientemente amplia.

2

¿Su campo de base de datos tiene 32 caracteres de largo? ¿Estás escribiendo en la base de datos usando md5 de mysql?

+0

Gracias, ese era el problema, había un máximo en la longitud de la columna => -1 ... por cierto gracias! eres tan pro. – kinaesthesia

0

El tamaño del hash si siempre se ha solucionado. En tu caso, el tamaño del hash es de 128 bits. Cuando se convierte en una cadena ascii, sería una cadena de 32 caracteres que contiene solo dígitos hexadecimales. por lo que si usted está guardando el carácter variable de la longitud debe ser de al menos 32 ejemplo: password varchar(32) debe ir en la tabla mysql entonces se puede llamar usando PHP usando select password from table where password =md5($password);