Je vais exécuter SHA256
un mot de passe + sel, mais je ne sais pas combien de temps pour créer ma VARCHAR
base de données MySQL. Quelle est une bonne longueur?
Je vais exécuter SHA256
un mot de passe + sel, mais je ne sais pas combien de temps pour créer ma VARCHAR
base de données MySQL. Quelle est une bonne longueur?
Réponses:
Un sha256 mesure 256 bits - comme son nom l'indique.
Puisque sha256 renvoie une représentation hexadécimale, 4 bits sont suffisants pour coder chaque caractère (au lieu de 8, comme pour ASCII), donc 256 bits représenteraient 64 caractères hexadécimaux, donc vous avez besoin d'un varchar(64)
, ou même d'un char(64)
, car la longueur est toujours la même , ne variant pas du tout.
Et la démo:
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
Te donnera :
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
c'est-à-dire une chaîne de 64 caractères.
varchar(65)
pour un leader !
... juste dire.
SELECT length(to_base64(unhex(sha2('say hello to my little friend',256))))
elle est toujours égale à 44 quelle que soit la longueur de la chaîne d'origine.
Options d'encodage pour les 256 bits du SHA256:
CHAR(44)
y compris le caractère de remplissageCHAR(64)
BINARY(32)
=
peut être retiré et rajouté.
Je préfère utiliser BINARY (32) car c'est la manière optimisée!
Vous pouvez placer dans ces 32 chiffres hexadécimaux de (00 à FF).
Donc BINAIRE (32)!
UPDATE...SET hash_column=UNHEX(sha256HexString)
. Ensuite, lors de la récupération, vous SELECT HEX(hash_column) AS hash_column
.
Pourquoi voudriez-vous en faire VARCHAR? Cela ne varie pas. Il s'agit toujours de 64 caractères, qui peuvent être déterminés en exécutant n'importe quoi dans l' une des calculatrices SHA-256 en ligne .
SHA-*
pour hacher les mots de passe, VEUILLEZ lire ceci en premier .