Linuxでは、sha1pass mypassword
を使用してSHA1パスワードハッシュを作成できます。 sha512
ハッシュを作成できる同様のコマンドラインツールはありますか? Bcrypt
とPBKDF2
についても同じ質問です。
はい、あなたは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
*/mkpasswd
を見つけるためにパッケージをインストールする必要がないため、これらの方法はどちらもrpm
を使用するよりも優れています。
これを回避するには、次の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」です。どちらの例でも$ 6 $を使用しています。これは、cryptでSHA-512を使用することを示しています。
doveadm
パッケージに含まれているdovecot
ユーティリティを使用できます。
doveadm pw -s SHA512-CRYPT
結果の例:
{SHA512-CRYPT}$6$0JvQ1LLFESzA16.I$JVdKAIq0igudTq06BMqzT9rL1gRawMPwLr9U3/kBMKUqZdONfa0wubC89C35LKl3aE16CRH57BfGb4ygPLggL1
{SHA512-CRYPT}をカットするだけで、SHA512ハッシュされた文字列が得られます。
次のコマンドを実行します。
$ /sbin/grub-crypt --sha-512
次に、ハッシュ化する単語を入力します。
OpenSSLは
openssl passwd -6
ヘルプは言う:
$ openssl passwd --help
Usage: passwd [options]
Valid options are:
...
-6 SHA512-based password algorithm
一貫した出力を得るには、saltを指定できます。
openssl passwd -6 -salt <YOUR_SALT>
出力は次のようになります。
$6$YOUR_SALT$q/oDR4twC1ik4RoxTJJtX.3MjenHVapkMaBbq2NcRHGQjqhIWRNcEVitYZhyIx98D7lF7qs0vLTq17X0nEr8I.
あり:6
アルゴリズムを示す「$」の間(上記の「-6」)、その後にYOUR_SALT
および "$"、SHA512合計で終了。
上記の@slmの回避策をさらに詳しく説明すると、誰かがbash履歴を手に入れてプレーンテキストのパスワードを見るのが心配な場合は、pythonにraw_input()
を挿入できます。 =ソルトとパスワードのフィールドが移動する場所のステートメント。入力を求めるプロンプトが表示されます。テキストは入力中にマスクされませんが、bashの履歴には表示されません。先頭のスペースでコマンドを開始することもできます。 、しかし私はいつもそうすることを忘れています。
python -c "import crypt, getpass, pwd; print crypt.crypt(raw_input(), '\$6\$' + raw_input() + '\$')"
ユーザーとパスワードを要求し、通常のhtpasswdファイルを生成するコマンド:
python -c 'import crypt,getpass; print(getpass.getpass("Name: ")+":"+crypt.crypt(getpass.getpass(),crypt.mksalt(crypt.METHOD_SHA512)))' >> htpasswd
すべてのpythonバージョン> 2.5で動作します。
あなたがシムの答えから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>
OpenSSLはそのためのコマンドラインツールを提供していないため、PBKDF2ハッシュを生成できる単純なアプリケーションをGoで記述しました。 sha1、sha256、sha512、md5をサポートしています。
自分でビルドするか、「リリース」セクションでリリース済みのバイナリをダウンロードできます。
https://github.com/riotkit-org/gpbkdf2
使い方はとても簡単です:
gpbkdf2 --passphrase=my-secret-passphrase --salt=my-secret-salt --digest-algorithm=sha512 --digest-rounds=10000 --length=128