回答:
バージョン2.4以降を使用している場合htpasswd
、apache-utilsパッケージから(ab)useできます。
htpasswd -bnBC 10 "" password | tr -d ':\n'
-b
2番目のコマンド引数からパスワード
-n
を取得し、ハッシュをファイルに書き込む代わりにstdoutに出力
-B
します。bcryptを使用するように指示すると
-C 10
、bcrypt コストが10に設定されます。
bare htpasswdコマンドは、<name>:<hash>の形式で出力し、その後に2つの改行が続きます。したがって、名前の空の文字列とtr
コロンと改行を削除します。
このコマンドは、$2y$
接頭辞付きのbcryptを出力しますが、これは用途によっては問題になる可能性がありますが、使用sed
するOpenBSDバリアントはを使用$2a$
する固定crypt_blowfishバリアントと互換性があるため、別のユーザが簡単に修正できます$2y$
。
htpasswd -bnBC 10 "" password | tr -d ':\n' | sed 's/$2y/$2a/'
htpasswdのmanページへのリンク:https://httpd.apache.org/docs/2.4/programs/htpasswd.html
:bcryptの変種についての詳細/programming//a/36225192/6732096
Pythonライブラリを使用できます。私のFedoraシステムでは、次のことを行いました。
sudo dnf search bcrypt
(sudoはユーザーのdnfキャッシュ用のスペースを無駄にしないためです)、結果からPython2およびPython3パッケージがあることがわかります:
py-bcrypt.x86_64 : Python bindings for OpenBSD's Blowfish password hashing code
python3-py-bcrypt.x86_64 : Python 3 bindings for OpenBSD's Blowfish password hashing code
Python2バージョンをインストールし、パッケージ内のファイルをリストします。
sudo dnf install py-bcrypt.x86_64
rpm -ql py-bcrypt.x86_64
これはファイルがある/usr/lib64/python2.7/site-packages/bcrypt/__init__.py
ことを示しているので、ドキュメントを取得できます
pydoc bcrypt
これは、文字列をハッシュする次のコマンドを書くのに十分なことを示しています"password"
:
$ python -c 'import bcrypt; print(bcrypt.hashpw("password", bcrypt.gensalt(log_rounds=10)))'
$2a$10$vWFRZgbOx6RKOKYxCTtyWuMJM60E90Vdm/.0nj.X/o3dYUxvQ/2Dm
以降のバージョンで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
:
#!/bin/sh
## bcrypt passwd generator ##
#############################
CMD=$(which htpasswd 2>/dev/null)
OPTS="-nBC 15"
USERNAME=$1
usage() {
local script=$(basename $0)
cat <<EOF
$script: Generate Bcrypt Hashed Passwords using htpasswd
Usage: $script username
EOF
exit 1
}
check_config() {
if [ -z $CMD ]; then
printf "Exiting: htpasswd is missing.\n"
exit 1
fi
if [ -z "$USERNAME" ]; then
usage
fi
}
check_config $USERNAME
printf "Generating Bcrypt hash for username: $USERNAME\n\n"
$CMD $OPTS $USERNAME
exit $?
root
ユーザーのBASH&mySQL履歴については、へのシンボリックリンクを作成することをお勧めします/dev/null
。