Security

如何在命令行上創建 SHA512 密碼雜湊

  • March 10, 2022

在 Linux 中,我可以使用sha1pass mypassword. 是否有類似的命令行工具可以讓我創建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::BcryptPerl 模組相當簡單地完成。

在任何 Red Hat 發行版(例如 Fedora、CentOS 或 RHEL)上,該命令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 密碼。請注意,這些是鹽漬的:

蟒蛇(> = 3.3)

$ 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(2.x 或 3.x)

$ python -c "import crypt, getpass, pwd; \
            print(crypt.crypt('password', '\$6\$saltsalt\$'))"

$6$saltsalt$qFmFH.bQmmtXzyBY0s9v7Oicd2z4XSIecDzlB5KiA2/jctKu9YterLp8wwnSq.qc.eoxqOmSuNp2xS0ktL3nh/

筆記: $ 6 $ 指定sha512。對這種指定算法的方法的支持取決於作業系統級別 crypt(3) 庫函式(通常在 libcrypt 中)的支持。它不依賴於 python 版本。

Perl

$ perl -e 'print crypt("password","\$6\$saltsalt\$") . "\n"'
$6$saltsalt$qFmFH.bQmmtXzyBY0s9v7Oicd2z4XSIecDzlB5KiA2/jctKu9YterLp8wwnSq.qc.eoxqOmSuNp2xS0ktL3nh/

在這些範例中,密碼是字元串“password”,salt 是“saltsalt”。兩個例子都在使用 $ 6 $ 這表示您希望 crypt 使用 SHA-512。

引用自:https://unix.stackexchange.com/questions/52108