Un sha256 est long de 256 bits -- comme son nom l'indique.
Étant donné que sha256 renvoie une représentation hexadécimale, 4 bits sont suffisants pour coder chaque caractère (au lieu de 8, comme pour l'ASCII), donc 256 bits représenteraient 64 caractères hexadécimaux, et il faut donc un fichier varchar(64)
ou même un char(64)
car la longueur est toujours la même, elle ne varie pas du tout.
Et la démo :
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
Vous donnera :
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
c'est-à-dire une chaîne de 64 caractères.
16 votes
Avant que quiconque lisant ceci ne décide de suivre ce conseil et d'utiliser
SHA-*
pour hacher les mots de passe, S'il vous plaît, lisez d'abord ceci .4 votes
À moins que vous n'utilisiez SHA-256 pour les mots de passe, ce que vous ne devriez pas faire, les hachages ont une longueur de 256 bits, ou 64 caractères hexadécimaux, ou 43 caractères alphanumériques, ou 32 octets.
0 votes
@c00000fd : Je ne suis pas sûr que le lien soit particulièrement pertinent. L'OP veut spécifiquement utiliser un 'mot de passe+salt'. Si le sel est composé de 16 caractères aléatoires, par exemple, alors il n'est pas important que SHA-256 soit "rapide", et les attaques par dictionnaire sont alors impossibles. Voir la documentation de gnu pour
crypt
pour le code d'exemple. SHA-x est parfait pour les phrases de passe, tant que vous savez ce que vous faites.