如何在命令行上创建 SHA512 密码哈希值

如何在命令行上创建 SHA512 密码哈希值

在 Linux 中,我可以使用 创建 SHA1 密码哈希sha1pass mypassword。是否有类似的命令行工具可以让我创建sha512哈希值?Bcrypt和 的问题相同PBKDF2

答案1

在任何 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 密码。请注意,这些是加盐的:

Python (>= 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 -e 'print crypt("password","\$6\$saltsalt\$") . "\n"'
$6$saltsalt$qFmFH.bQmmtXzyBY0s9v7Oicd2z4XSIecDzlB5KiA2/jctKu9YterLp8wwnSq.qc.eoxqOmSuNp2xS0ktL3nh/

在这些示例中,密码是字符串“password”,盐是“saltsalt”。两个例子都使用$6$这表示您希望 crypt 使用 SHA-512。

答案2

是的,您正在寻找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 模块相当简单地完成。

答案3

OpenSSL 有

openssl passwd -6

帮助说:

$ openssl passwd --help
Usage: passwd [options]
Valid options are:
...
 -6                  SHA512-based password algorithm

为了获得一致的输出,您可以指定盐:

openssl passwd -6 -salt <YOUR_SALT>

输出类似于:

$6$YOUR_SALT$q/oDR4twC1ik4RoxTJJtX.3MjenHVapkMaBbq2NcRHGQjqhIWRNcEVitYZhyIx98D7lF7qs0vLTq17X0nEr8I.

with:6在表示算法的“$”之间(上面的“-6”),然后是YOUR_SALT和 “$”,最后是 SHA512 和。

答案4

运行这个命令:

$ /sbin/grub-crypt --sha-512

然后输入您想要散列的单词。

相关内容