Voy a ejecutar SHA256
con una contraseña + salt, pero no sé cuánto tiempo debo hacer VARCHAR
al configurar la base de datos MySQL. ¿Qué es una buena longitud?
Voy a ejecutar SHA256
con una contraseña + salt, pero no sé cuánto tiempo debo hacer VARCHAR
al configurar la base de datos MySQL. ¿Qué es una buena longitud?
Respuestas:
Un sha256 tiene 256 bits de longitud, como su nombre lo indica.
Como sha256 devuelve una representación hexadecimal, 4 bits son suficientes para codificar cada carácter (en lugar de 8, como para ASCII), por lo que 256 bits representarían 64 caracteres hexadecimales, por lo tanto, necesita un varchar(64)
, o incluso un char(64)
, ya que la longitud es siempre la misma , sin variar en absoluto.
Y la demo:
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
Te regalaré :
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
es decir, una cadena con 64 caracteres.
varchar(65)
como líder !
... solo diciendo.
SELECT length(to_base64(unhex(sha2('say hello to my little friend',256))))
siempre es 44, independientemente de la longitud de la cadena original.
Opciones de codificación para los 256 bits de SHA256:
CHAR(44)
incluido el carácter de rellenoCHAR(64)
BINARY(32)
=
se puede quitar y volver a agregar.
¡Prefiero usar BINARY (32) ya que es la forma optimizada!
Puede colocar en esos 32 dígitos hexadecimales de (00 a FF).
¡Por lo tanto BINARIO (32)!
UPDATE...SET hash_column=UNHEX(sha256HexString)
. Entonces, al recuperarlo, tú SELECT HEX(hash_column) AS hash_column
.
¿Por qué lo harías VARCHAR? No varía Siempre son 64 caracteres, que se pueden determinar ejecutando cualquier cosa en una de las calculadoras SHA-256 en línea .
SHA-*
para hacer hash de contraseñas, LEA esto primero .