Как я должен хранить хэш SHA512 и PASSWORD_BCRYPT в MySQL?

Я пытаюсь найти способ сохранить сгенерированный SHA512 хеш в моей базе данных. Я уже искал в Google «sql store hash», но ничего не найдено, так что … я должен использовать binary? возможно varbinary? возможно что-то еще? как насчет password_hash(..., PASSWORD_BCRYPT) — как я должен хранить этот? через varchar?

Большое спасибо

-2

Решение

Я бы не стал рекомендовать SHA512, так как он довольно быстрый и брутфорс не займет много времени.
Я рекомендую использовать password_hash () с использованием PASSWORD_BCRYPT, который возвращает строку длиной 60 символов. Таким образом, Varchar (60) будет путь.

Если вы используете его, используйте PASSWORD_DEFAULT (в настоящее время bcrypt) и увеличьте varchar, если он изменится. Мы надеемся, что это поможет вам использовать безопасный алгоритм хеширования.
Как отметил @nogad в своем комментарии: 255 должно быть хорошим размером для поля в базе данных.

1

Другие решения

Хэши паролей могут храниться практически в любом поле, в котором может храниться полный строковый набор символов, обычно рекомендуется использовать поле, поддерживающее 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,

1

По вопросам рекламы [email protected]