Хранение хешированных паролей в MySQL - PullRequest
9 голосов
/ 23 февраля 2010

Я создаю хешированные пароли, используя подсоленный sha1 в PHP.

Мой вопрос: в MySQL, какова правильная кодировка символов, тип поля и длина для хранения результата?

Есть ли что-то еще в MySQL, чтобы рассмотреть вопрос о безопасности пароля? Наконец, SHA256 или SHA512 - это практический выбор хеширования?

Ответы [ 2 ]

12 голосов
/ 23 февраля 2010

Алгоритмы SHA-2 (SHA-256, SHA-512) являются допустимыми вариантами; Однако они требуют больше памяти. Например, для хранения шестнадцатеричных цифр для SHA-256 необходимо поле CHAR (64). Возникли некоторые вопросы о том, является ли SHA-1 «сломанным» Шнейер обсуждал это и Комментарий NIST . Если это вас касается, то, возможно, лучше использовать одну из функций SHA-2.

И если вы хотите увеличить стоимость атаки методом перебора, вы можете также рассмотреть возможность добавления некоторых итераций с использованием такого алгоритма, как PBKDF2. Кто-то опубликовал пример здесь, в комментариях .

5 голосов
/ 23 февраля 2010

Для хэша SHA1 CHAR (40) будет оптимальным типом поля и длиной. Кодировка символов не должна иметь большого значения, все символы находятся в диапазоне ASCII. Для согласованности я бы использовал тот же набор символов, что и остальная часть вашей базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...