Zamierzam uruchomić SHA256
hasło + sól, ale nie wiem, jak długo muszę to robić VARCHAR
podczas konfigurowania bazy danych MySQL. Jaka jest dobra długość?
Zamierzam uruchomić SHA256
hasło + sól, ale nie wiem, jak długo muszę to robić VARCHAR
podczas konfigurowania bazy danych MySQL. Jaka jest dobra długość?
Odpowiedzi:
Sha256 ma 256 bitów długości - jak wskazuje jego nazwa.
Ponieważ sha256 zwraca reprezentację szesnastkową, 4 bity wystarczą do zakodowania każdego znaku (zamiast 8, jak w ASCII), więc 256 bitów reprezentuje 64 znaki szesnastkowe, dlatego potrzebujesz varchar(64)
, a nawet a char(64)
, ponieważ długość jest zawsze taka sama , wcale się nie zmienia.
I demo:
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
Da tobie :
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
tzn. ciąg znaków o długości 64 znaków.
varchar(65)
wiodącego !
... po prostu mówiąc.
SELECT length(to_base64(unhex(sha2('say hello to my little friend',256))))
zawsze ma ona wartość 44 bez względu na długość oryginalnego łańcucha.
Opcje kodowania 256 bitów SHA256:
CHAR(44)
łącznie ze znakiem dopełnianiaCHAR(64)
BINARY(32)
=
można go rozebrać i ponownie dodać.
Wolę używać BINARY (32), ponieważ jest to zoptymalizowany sposób!
Możesz umieścić w nich 32 cyfry szesnastkowe od (00 do FF).
Dlatego BINARY (32)!
UPDATE...SET hash_column=UNHEX(sha256HexString)
. Następnie, podczas odzyskiwania, ty SELECT HEX(hash_column) AS hash_column
.
Dlaczego miałbyś to zrobić VARCHAR? To się nie zmienia. To zawsze 64 znaki, które można ustalić, uruchamiając cokolwiek w jednym z internetowych kalkulatorów SHA-256 .
SHA-*
hasła mieszającego, PROSZĘ przeczytaj to najpierw .