Как мне создать хэш bcrypt в C и сохранить их - PullRequest
0 голосов
/ 19 октября 2018

Поскольку аналогичный вопрос был расценен как не по теме ... Я изменил свой вопрос (чтобы он соответствовал правилам сайта без сомнения) в соответствии с несколькими главными вопросами о самом стековом потоке (приведенном внизу).

ОС: 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?

Хеширование пароля, соль и хранение хеш-значений

1 Ответ

0 голосов
/ 19 октября 2018

Функции библиотеки BSD для работы с bcrypt описаны здесь.

https://man.openbsd.org/crypt_newhash.3

Создайте хеш с помощью crypt_newhash () или используйте crypt_checkpass () для сравнения хеша и пароля.

Это простые функции.Если вы не можете заставить их работать, вам нужен учебник по Си, а не вопросы здесь.

Аналогично, для сравнения строк вы хотите strncmp ().Это стандартные и хорошо документированные функции.

...