Ho intenzione di eseguire SHA256
una password + salt, ma non so quanto tempo impiegherò VARCHAR
per configurare il database MySQL. Qual è una buona lunghezza?
Ho intenzione di eseguire SHA256
una password + salt, ma non so quanto tempo impiegherò VARCHAR
per configurare il database MySQL. Qual è una buona lunghezza?
Risposte:
Uno sha256 è lungo 256 bit - come indica il nome.
Poiché sha256 restituisce una rappresentazione esadecimale, sono sufficienti 4 bit per codificare ciascun carattere (anziché 8, come per ASCII), quindi 256 bit rappresenterebbero 64 caratteri esadecimali, quindi è necessario un varchar(64)
, o addirittura un char(64)
, poiché la lunghezza è sempre la stessa , non varia affatto.
E la demo:
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
Ti darà:
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
cioè una stringa con 64 caratteri.
varchar(65)
come leader !
... solo per dirlo.
SELECT length(to_base64(unhex(sha2('say hello to my little friend',256))))
è sempre 44 qualunque sia la lunghezza della stringa originale.
Opzioni di codifica per i 256 bit di SHA256:
CHAR(44)
incluso carattere di riempimentoCHAR(64)
BINARY(32)
=
può essere rimosso e aggiunto di nuovo.
Preferisco usare BINARY (32) poiché è il modo ottimizzato!
È possibile inserire in quelle 32 cifre esadecimali da (00 a FF).
Pertanto BINARY (32)!
UPDATE...SET hash_column=UNHEX(sha256HexString)
. Quindi, quando lo recuperi, tu SELECT HEX(hash_column) AS hash_column
.
Perché dovresti farlo VARCHAR? Non varia. Sono sempre 64 caratteri, che possono essere determinati eseguendo qualsiasi cosa in uno dei calcolatori SHA-256 online .
SHA-*
per le password di hash, PER FAVORE leggi prima questo .