Как долго хеш SHA256? - PullRequest
       26

Как долго хеш SHA256?

216 голосов
/ 11 февраля 2010

Я собираюсь запустить SHA256 на пароле + соль, но я не знаю, как долго будет работать мой VARCHAR при настройке базы данных MySQL. Что такое хорошая длина?

Ответы [ 5 ]

294 голосов
/ 11 февраля 2010

Sha256 имеет длину 256 бит - как видно из его названия.

Если вы используете шестнадцатеричное представление, каждая цифра кодирует 4 бита; поэтому вам нужно 64 цифры для представления 256 битов - вам нужно varchar(64) или char(64), так как длина всегда одна и та же, совсем не меняется.

И демоверсия:

$hash = hash('sha256', 'hello, world!');
var_dump($hash);

Даст вам:

$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"

т.е. строка из 64 символов.

58 голосов
/ 05 марта 2015

Варианты кодирования для 256 битов SHA256:

  1. Base64: 6 бит на символ = CHAR(44), включая символ заполнения
  2. Hex: 4 бита на символ = CHAR(64)
  3. Двоичный: 8 бит на байт = BINARY(32)
24 голосов
/ 08 июня 2013

Я предпочитаю использовать BINARY (32), так как это оптимизированный способ!

Вы можете поместить в эти 32 шестнадцатеричные цифры от (00 до FF).

Поэтому BINARY (32)!

20 голосов
/ 11 февраля 2010

Зачем ты сделал это VARCHAR? Это не меняется. Это всегда 64 символа, что можно определить, введя что-нибудь в один из онлайн калькуляторов SHA-256 .

6 голосов
/ 13 октября 2012

Будет исправлено 64 символа, поэтому используйте <strong>char(64)</strong>

...