2010-04-02 44 views
7

me preguntaba si utilizo la función de hash de PHP() para generar hashes SHA512 cómo sería mi mirada campo de tabla MySQL como en el fin de ser capaz de mantener la contraseña hash.Almacenamiento de SHA-512 Los valores hash en MySQL

Aquí es mi esquema actual del campo de la contraseña de MySQL

char(40) 
+0

Revise la sección del manual de referencia de MySQL sobre "Tipos de datos": http://dev.mysql.com/doc/refman/5.1/en/data-types.html – bdl

Respuesta

17

Un hash SHA512 se representa como un 128 caracteres-larga cadena.

Por ejemplo, la porción de código siguiente:

$sha512 = hash('sha512', "Hello, World!"); 
echo strlen($sha512); 

dará a esta salida:

128 


que significa que su char(40) es demasiado pequeña, y que se debe utilizar un char(128) .


Otra solución sería almacenarlo en una forma binaria, y no en una cadena, lo que significaría 64 bytes.

Pero tenga en cuenta que podría ser más difícil de tratar que la representación, en algunos casos, supongo.

+0

¿Puede explicar de dónde obtuvo 64 bytes? Estoy tratando de entender las matemáticas. –

+1

un sha512 se representa como 128 caracteres hexadecimales; cuando usa hexadecimal, usa dos dígitos para representar un byte (de 0x00 a 0xFF); Por lo tanto, para almacenar un valor binario que puede ser representado por 128 caracteres hexadecimales, que necesita 64 bytes, si almacenarla como binario, y no de texto hexadecimal. –

+0

Tiene sentido. ¡Gracias! –

Cuestiones relacionadas