Security
如何在命令行上創建 SHA512 密碼雜湊
在 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::Bcrypt
Perl 模組相當簡單地完成。
在任何 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。