回答:
はい、探していますmkpasswd
(これは少なくともDebianでは)whois
パッケージの一部です。理由を聞かないでください...
anthony@Zia:~$ mkpasswd -m help
Available methods:
des standard 56 bit DES-based crypt(3)
md5 MD5
sha-256 SHA-256
sha-512 SHA-512
残念ながら、私のバージョンは少なくともbcryptを行いません。Cライブラリがサポートしている場合は、その必要があります(そして、マンページに強度を設定する-Rオプションがあります)。-Rはsha-512でも動作しますが、PBKDF-2かどうかはわかりません。
bcryptパスワードを生成する必要がある場合は、Crypt::Eksblowfish::Bcrypt
Perlモジュールを使用してかなり簡単に実行できます。
Fedora、CentOS、RHELなどのRed Hatディストリビューションでmkpasswd
は、Debian / Ubuntuに通常含まれているバージョンと同じスイッチセットがコマンドに含まれていません。
注:コマンドmkpasswd
は実際にはexpect
パッケージの一部であり、おそらく避けるべきです。これらのコマンドのいずれかを使用して、どのパッケージに属しているかを確認できます。
$ yum whatprovides "*/mkpasswd"
-or-
$ repoquery -q --file */mkpasswd
$ repoquery -q --file */mkpasswd
expect-0:5.43.0-8.el5.x86_64
expect-0:5.43.0-8.el5.i386
これらの方法は両方とも、rpm
見つけるためにパッケージをインストールする必要がないため、使用するよりも優れています*/mkpasswd
。
これを回避するには、次のPythonまたはPerlワンライナーを使用してSHA-512パスワードを生成できます。これらは塩漬けされていることに注意してください:
$ python -c 'import crypt,getpass; print(crypt.crypt(getpass.getpass(), crypt.mksalt(crypt.METHOD_SHA512)))'
-またはスクリプト化-
$ python -c 'import crypt; print(crypt.crypt("somesecret", crypt.mksalt(crypt.METHOD_SHA512)))'
$ python -c "import crypt, getpass, pwd; \
print(crypt.crypt('password', '\$6\$saltsalt\$'))"
$6$saltsalt$qFmFH.bQmmtXzyBY0s9v7Oicd2z4XSIecDzlB5KiA2/jctKu9YterLp8wwnSq.qc.eoxqOmSuNp2xS0ktL3nh/
注:$ 6 $はsha512を示します。このアルゴリズム指定方法のサポートは、OSレベルのcrypt(3)ライブラリ関数(通常はlibcrypt)のサポートに依存しています。Pythonバージョンに依存しません。
$ perl -e 'print crypt("password","\$6\$saltsalt\$") . "\n"'
$6$saltsalt$qFmFH.bQmmtXzyBY0s9v7Oicd2z4XSIecDzlB5KiA2/jctKu9YterLp8wwnSq.qc.eoxqOmSuNp2xS0ktL3nh/
これらの例では、パスワードはストリング「password」であり、ソルトは「saltsalt」です。どちらの例も、cryptでSHA-512を使用することを示す$ 6 $を使用しています。
crypt.mksalt(crypt.METHOD_SHA512)
、固定のものを使用する代わりにを使用してソルトを生成できます。
crypt.mksalt
はPython 3.xでのみ利用可能です
crypt.mksalt
、CentOS 7.1
パッケージにdoveadm
含まれているユーティリティを使用できdovecot
ます。
doveadm pw -s SHA512-CRYPT
結果の例:
{SHA512-CRYPT}$6$0JvQ1LLFESzA16.I$JVdKAIq0igudTq06BMqzT9rL1gRawMPwLr9U3/kBMKUqZdONfa0wubC89C35LKl3aE16CRH57BfGb4ygPLggL1
{SHA512-CRYPT}をカットするだけで、SHA512ハッシュ文字列を取得できます。
doveadm(jotik): Fatal: Error reading configuration: stat(/etc/dovecot/dovecot.conf) failed: Permission denied (euid=1000(jotik) egid=100(users) missing +x perm: /etc/dovecot, we're not in group 97(dovecot), dir owned by 0:97 mode=0750)
上記の@slmの回避策を展開するには、誰かがあなたのbash履歴を手に入れてプレーンテキストのパスワードを見るのが心配な場合raw_input()
は、saltフィールドとpasswordフィールドが行くようにpythonステートメントに挿入して、プロンプトを表示することができます。入力中はテキストはマスクされませんが、bash履歴には表示されません。また、先頭にスペースを入れてコマンドを開始することもできますが、それを忘れてしまいます。
python -c "import crypt, getpass, pwd; print crypt.crypt(raw_input(), '\$6\$' + raw_input() + '\$')"
bash
スペースを追加HISTCONTROL=ignorespace
するコマンドを記録しないように設定することもでき.bashrc
ます。履歴から除外するコマンドを実行するときは、スペースを入力してから実際のコマンドを入力します。
simの回答からPython(> = 2.7)メソッドを使用しており、パスワードを生成する前に確認したい場合-太い指のパスワードがあるため...
$ python -c 'import crypt,getpass;pw=getpass.getpass(); print(crypt.crypt(pw), crypt.mksalt(crypt.METHOD_SHA512) if (pw==getpass.getpass("Confirm: ")) else exit())'
Linuxのopensslバージョン「OpenSSL 1.1.1」およびMacOSのopensslバージョン「LibreSSL 2.6.5」はmd5_cryptをサポートしています。
実行してパスワードを入力するだけです:
openssl passwd -crypt
Password:
Verifying - Password:
<results_into_a_md5_crypt_password>
または、プレーンテキストパスワードを直接CLIに提供します。
openssl password -crypt <plain_text_password_goes_here>
<results_into_a_md5_crypt_password>
以下を使用できますsha512sum
。
echo "password" | sha512sum
sha1sum
?