Я пытаюсь найти способ сохранить сгенерированный SHA512 хеш в моей базе данных. Я уже искал в Google «sql store hash», но ничего не найдено, так что … я должен использовать binary
? возможно varbinary
? возможно что-то еще? как насчет password_hash(..., PASSWORD_BCRYPT)
— как я должен хранить этот? через varchar
?
Большое спасибо
Я бы не стал рекомендовать SHA512, так как он довольно быстрый и брутфорс не займет много времени.
Я рекомендую использовать password_hash () с использованием PASSWORD_BCRYPT, который возвращает строку длиной 60 символов. Таким образом, Varchar (60) будет путь.
Если вы используете его, используйте PASSWORD_DEFAULT (в настоящее время bcrypt) и увеличьте varchar, если он изменится. Мы надеемся, что это поможет вам использовать безопасный алгоритм хеширования.
Как отметил @nogad в своем комментарии: 255 должно быть хорошим размером для поля в базе данных.
Хэши паролей могут храниться практически в любом поле, в котором может храниться полный строковый набор символов, обычно рекомендуется использовать поле, поддерживающее UTF-8 (в любой форме, даже MySQL UTF-8), так что вы можете использовать VARCHAR
, или же TEXT
Поля для хранения строки, так как это все, что есть, является строкой. Это не особенное.
Существует проблема длины, что столбец должен быть достаточно длинным, чтобы хранить данные, а не обрезать их. Сверху головы я думаю PHP password_hash
с помощью PASSWORD_BCRYPT
ограничено 60 символами, но другие механизмы хеширования будут длиннее.
ALTER TABLE <name> ADD `passwd` TEXT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci NOT NULL ;
Как примечание стороны password
является ключевым словом MySQL, и хотя оно не зарезервировано, оно может упростить поддержку и понять вашу IDE, если вы не назовете столбец password
,