Поскольку аналогичный вопрос был расценен как не по теме ... Я изменил свой вопрос (чтобы он соответствовал правилам сайта без сомнения) в соответствии с несколькими главными вопросами о самом стековом потоке (приведенном внизу).
ОС: CentOS (GCC) Сценарий: управление паролями в сети Pref: реализация OpenBSD
Я пытаюсь использовать bcrypt (использование которого является окончательным).Но, похоже, не может найти надежных и правильных способов сделать это, включая генерацию хешей, перезапись памяти и их хранение.
Я видел главные вопросы по stackoverflow (и security.stackex), помеченные для bcrypt, на данный момент я не видел комбинированный пример правильного способа сделать это.То, что я собрал:
- 50 (безопасный) и 72 (расширенный) пароль пароля - это верхний предел для bcrypt
- Binary (60) - это общий тип данных для его хранения.
- Текущие минимальные раунды составляют около 8, а по умолчанию 10
- gnu libgcrypt имеет bcrypt.(Я хочу увидеть пример с его использованием)
- Кроме того, я использую некоторые другие функции POSIX в своем скрипте через "#define _POSIX_C_SOURCE 200809"
Честно говоря, есть множество способов ошибиться при объединении всех этих блоков , и я также видел, как люди явно стремятся рекомендовать соленые хэши паролей, даже если они выходят за рамки темы в других вопросах.
Я не спрашиваю о лучшем способе (который может разделить мнение), но об одном из лучших способов сделать это разумно в коде.
У меня есть строка 'plainpassword', надлежащим образом завершенная и очищенная с помощью NULL (не вдавайтесь в это), содержащая пароль, введенный пользователем.
что дальше?Как создать хеш bcrypt сейчас?И как правильно сравнить его с хешем, запрашиваемым у Mysql?используя strncmp (или даже strcmp) или strcoll?
как перезаписать открытый текст в памяти?мне нужно что-нибудь еще?
Должен ли я использовать это: https://man.openbsd.org/crypt_checkpass.3
Я смиренно ищу помощи.Большое спасибо.
Подобные вопросы о Stackoverflow:
Как создать хеш SHA1 в ruby?
Хранение хеш-значений SHA1 в MySQL
HMAC-SHA1: как правильно сделать это в Java?
хеш-функция для строки
Минимальная хеш-функция для C?
Хеширование пароля, соль и хранение хеш-значений