Я собираюсь запустить SHA256 на пароле + соль, но я не знаю, как долго сделать мой VARCHAR при настройке базы данных mysql. Что такое хорошая длина?
При использовании хэша SHA256, сколько времени занимает хеш? (т.е. как долго должен быть мой mysql VARCHAR?)
Ответ 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)