При использовании хэша SHA256, сколько времени занимает хеш? (т.е. как долго должен быть мой mysql VARCHAR?)
Я собираюсь запустить SHA256 на пароле + соль, но я не знаю, как долго сделать мой VARCHAR при настройке базы данных mysql. Что такое хорошая длина?
Ответы
Ответ 1
A sha256 имеет длину 256 бит - как указывает его имя.
Если вы используете шестнадцатеричное представление, каждая цифра кодирует 4 бита; поэтому вам нужно 64 цифры для представления 256 бит - так что вам нужно varchar(64)
или char(64)
, так как длина всегда одна и та же, не меняя вообще.
И демо:
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
Вы получите:
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
то есть. строка с 64 символами.
Ответ 2
Параметры кодирования для SHA256 256 бит:
- Base64: 6 бит на char=
CHAR(44)
, включая символ заполнения
- Hex: 4 бит за char=
CHAR(64)
- Двоичный: 8 бит на байт =
BINARY(32)
Ответ 3
Почему вы сделали это VARCHAR? Он не меняется. Это всегда 64 символа, которые можно определить, выполнив что-нибудь в одном из онлайн-калькуляторов SHA-256.
Ответ 4
Я предпочитаю использовать BINARY (32), так как он оптимизирован!
Вы можете разместить в этом 32 шестнадцатеричных числах от (от 00 до FF).
Поэтому BINARY (32)!
Ответ 5
Будет зафиксировано 64 символа, поэтому используйте char(64)