Я собираюсь запустить SHA256
пароль + соль, но я не знаю, как долго это сделать VARCHAR
при настройке базы данных MySQL. Что такое хорошая длина?
Я собираюсь запустить SHA256
пароль + соль, но я не знаю, как долго это сделать VARCHAR
при настройке базы данных MySQL. Что такое хорошая длина?
Ответы:
Sha256 имеет длину 256 бит - как видно из его названия.
Поскольку sha256 возвращает шестнадцатеричное представление, для кодирования каждого символа достаточно 4 бит (вместо 8, как для ASCII), поэтому 256 бит будут представлять 64 шестнадцатеричных символа, поэтому вам нужна буква a varchar(64)
или даже a char(64)
, поскольку длина всегда одинакова , не меняясь вообще.
И демо:
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
Дам тебе :
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
т.е. строка из 64 символов.
varchar(65)
в качестве ведущего !
... просто сказать.
SELECT length(to_base64(unhex(sha2('say hello to my little friend',256))))
всегда равно 44 независимо от длины исходной строки.
Варианты кодирования для 256-битного SHA256:
CHAR(44)
включая символ заполненияCHAR(64)
BINARY(32)
=
можно удалить и снова добавить.
Я предпочитаю использовать BINARY (32), так как это оптимизированный способ!
Вы можете поместить в эти 32 шестнадцатеричные цифры от (00 до FF).
Поэтому БИНАРНЫЙ (32)!
UPDATE...SET hash_column=UNHEX(sha256HexString)
. Затем, когда вы получите его, вы SELECT HEX(hash_column) AS hash_column
.
Зачем ты сделал это VARCHAR? Это не меняется. Это всегда 64 символа, что можно определить, запустив что-нибудь в один из онлайн-калькуляторов SHA-256 .
Будет исправлено 64 символа, поэтому используйте char(64)
CHARACTER SET ascii
.
SHA-*
для хэширования паролей, ПОЖАЛУЙСТА, сначала прочтите это .