Вы можете (ab) использовать htpasswd
из пакета apache-utils , если у вас версия 2.4 или выше.
htpasswd -bnBC 10 "" password | tr -d ':\n'
-b
принимает пароль от второго аргумента команды
-n
выводит хэш на стандартный вывод вместо записи в файл
-B
предписывает использовать Bcrypt
-C 10
наборы в Bcrypt стоимости 10
Голая команда htpasswd выводит в формате <name>: <hash>, за которым следуют две новые строки. Отсюда и пустая строка для имени и tr
удаления двоеточия и перевода строки.
Команда выводит bcrypt с $2y$
префиксом, что может быть проблемой для некоторых применений, но может быть легко исправлено другим, sed
поскольку использование варианта OpenBSD $2a$
совместимо с использованием фиксированного варианта crypt_blowfish $2y$
.
htpasswd -bnBC 10 "" password | tr -d ':\n' | sed 's/$2y/$2a/'
Ссылка на справочную страницу htpasswd: https://httpd.apache.org/docs/2.4/programs/htpasswd.html
Подробная информация о вариантах bcrypt: /programming//a/36225192/6732096
Вы можете использовать библиотеку Python. На моей системе Fedora я сделал:
(sudo просто для того, чтобы не тратить пространство на пользовательский dnf-кеш) и из результата видно, что есть пакеты Python2 и Python3:
Установите версию Python2 и перечислите файлы в пакете:
Это показывает, что есть файл,
/usr/lib64/python2.7/site-packages/bcrypt/__init__.py
поэтому я могу получить документацию сЭтого достаточно, чтобы написать следующую команду, которая хеширует строку
"password"
:Для более поздних версий
bcrypt
используйтеrounds=
вместоlog_rounds=
.источник
sudo
запускатьdnf search
, он отлично работает как обычный пользователь.log_rounds
похоже, изменилась кrounds
сделать егоpython -c 'import bcrypt; print(bcrypt.hashpw("password", bcrypt.gensalt(rounds=10)))'
.Дополнительно к
@Disassembler
ответу:ps
)15
хороший баланс для сложности / скорости генерации пароляСкрипт оболочки для
htpasswd
&bcrypt
:источник
root
пользователя неплохо создать символическую ссылку на/dev/null
.