stu*_*ent 107 security password encryption hashsum
在 Linux 中,我可以使用sha1pass mypassword. 是否有类似的命令行工具可以让我创建sha512哈希?对于同样的问题Bcrypt和PBKDF2。
slm*_*slm 86
在任何 Red Hat 发行版(例如 Fedora、CentOS 或 RHEL)上,该命令mkpasswd不包含与 Debian/Ubuntu 中通常包含的版本相同的一组开关。
注意:该命令mkpasswd实际上是expect包的一部分,应该避免使用。您可以使用这些命令中的任何一个来找出它属于哪个包。
$ yum whatprovides "*/mkpasswd"
-or-
$ repoquery -q --file */mkpasswd
Run Code Online (Sandbox Code Playgroud)
$ repoquery -q --file */mkpasswd
expect-0:5.43.0-8.el5.x86_64
expect-0:5.43.0-8.el5.i386
Run Code Online (Sandbox Code Playgroud)
这两种方法都优于使用,rpm因为不必安装软件包即可定位*/mkpasswd.
要解决此问题,您可以使用以下 Python 或 Perl 单行程序生成 SHA-512 密码。请注意,这些是加盐的:
$ python -c 'import crypt,getpass; print(crypt.crypt(getpass.getpass(), crypt.mksalt(crypt.METHOD_SHA512)))'
Run Code Online (Sandbox Code Playgroud)
- 或脚本 -
$ python -c 'import crypt; print(crypt.crypt("somesecret", crypt.mksalt(crypt.METHOD_SHA512)))'
Run Code Online (Sandbox Code Playgroud)
$ python -c "import crypt, getpass, pwd; \
print(crypt.crypt('password', '\$6\$saltsalt\$'))"
$6$saltsalt$qFmFH.bQmmtXzyBY0s9v7Oicd2z4XSIecDzlB5KiA2/jctKu9YterLp8wwnSq.qc.eoxqOmSuNp2xS0ktL3nh/
Run Code Online (Sandbox Code Playgroud)
注意:$6$ 表示 sha512。对这种指定算法的方法的支持取决于操作系统级 crypt(3) 库函数(通常在 libcrypt 中)的支持。它不依赖于 python 版本。
$ perl -e 'print crypt("password","\$6\$saltsalt\$") . "\n"'
$6$saltsalt$qFmFH.bQmmtXzyBY0s9v7Oicd2z4XSIecDzlB5KiA2/jctKu9YterLp8wwnSq.qc.eoxqOmSuNp2xS0ktL3nh/
Run Code Online (Sandbox Code Playgroud)
在这些示例中,密码是字符串“password”,而盐是“saltsalt”。两个示例都使用$6$,这表示您希望 crypt 使用 SHA-512。
der*_*ert 71
是的,您正在寻找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
Run Code Online (Sandbox Code Playgroud)
不幸的是,我的版本至少不做 bcrypt。如果您的 C 库这样做,它应该(并且联机帮助页提供了一个 -R 选项来设置强度)。-R 也适用于 sha-512,但我不确定它是否适用于 PBKDF-2。
如果您需要生成 bcrypt 密码,您可以使用Crypt::Eksblowfish::BcryptPerl 模块相当简单地完成。
obo*_*vyk 17
您可以使用该doveadm程序dovecot包中包含的实用程序。
doveadm pw -s SHA512-CRYPT
Run Code Online (Sandbox Code Playgroud)
结果示例:
{SHA512-CRYPT}$6$0JvQ1LLFESzA16.I$JVdKAIq0igudTq06BMqzT9rL1gRawMPwLr9U3/kBMKUqZdONfa0wubC89C35LKl3aE16CRH57BfGb4ygPLggL1
Run Code Online (Sandbox Code Playgroud)
只需剪切{SHA512-CRYPT}即可获得 SHA512 哈希字符串。
小智 15
OpenSSL 有
openssl passwd -6
Run Code Online (Sandbox Code Playgroud)
帮助说:
$ openssl passwd --help
Usage: passwd [options]
Valid options are:
...
-6 SHA512-based password algorithm
Run Code Online (Sandbox Code Playgroud)
为了一致的输出,您可以指定盐:
openssl passwd -6 -salt <YOUR_SALT>
Run Code Online (Sandbox Code Playgroud)
输出类似于:
$6$YOUR_SALT$q/oDR4twC1ik4RoxTJJtX.3MjenHVapkMaBbq2NcRHGQjqhIWRNcEVitYZhyIx98D7lF7qs0vLTq17X0nEr8I.
Run Code Online (Sandbox Code Playgroud)
with:6在表示算法的“$”之间(上面的“-6”),然后是YOUR_SALT和“$”,以SHA512和结束。