我见过的以前的 SF 问题的答案都是产生 MD5 散列密码。
有人对生成 SHA-512 哈希密码有什么建议吗?我更喜欢一行代码而不是脚本,但如果脚本是唯一的解决方案,那也很好。
更新
用这个替换以前的py2版本:
python3 -c "import crypt;print(crypt.crypt(input('clear-text pw: '), crypt.mksalt(crypt.METHOD_SHA512)))"
答案1
编辑:请注意这个答案已有 10 多年了。
以下是一行代码:
python -c 'import crypt; print crypt.crypt("test", "$6$random_salt")'
Python 3.3+ 包括mksalt
在墓穴中,这使得使用起来更加容易(并且更加安全):
python3 -c 'import crypt; print(crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512)))'
如果您不提供参数crypt.mksalt
(它可以接受、、crypt.METHOD_CRYPT
和),它将使用最强的可用参数。...MD5
SHA256
SHA512
哈希的 ID(第一个 之后的数字$
)与所使用的方法相关:
- 1 -> MD5
- 2a -> Blowfish(不在主流 glibc 中;在一些 Linux 发行版中添加)
- 5 -> SHA-256(自 glibc 2.7 起)
- 6 -> SHA-512(自 glibc 2.7 起)
我建议你查一下盐是什么,以及根据 smallclamgers 的评论,加密和散列之间的区别。
更新 1:生成的字符串适用于 shadow 和 kickstart 脚本。
更新 2:警告。如果您使用的是 Mac,请参见有关在 Mac 上的 Python 中使用它的评论,它似乎无法按预期工作。
在 macOS 上你应该不是使用上述版本,因为 Python 使用系统的crypt()
版本行为不同,并使用不安全的 DES 加密。您可以使用这个独立于平台的单行程序(需要 passlib – 使用 安装pip3 install passlib
):
python3 -c 'import passlib.hash; print(passlib.hash.sha512_crypt.hash("test"))'
答案2
在 Debian 上你可以使用 创建密码 使用适合 /etc/shadow 的不同哈希算法创建密码。它包含在 whois 包中(根据 apt-file)
mkpasswd -m sha-512
mkpasswd -m md5
要获取可用的哈希算法列表,请输入:
mkpasswd -m help
高血压
答案3
使用grub-crypt
Usage: grub-crypt [OPTION]...
Encrypt a password.
-h, --helpPrint this message and exit
-v, --version Print the version information and exit
--md5 Use MD5 to encrypt the password
--sha-256 Use SHA-256 to encrypt the password
**--sha-512 Use SHA-512 to encrypt the password (default)**
答案4
openssl passwd
令人惊讶的是,没有答案建议使用带有选项的简单命令-6
。也许它在 2011 年还不可用?
如果您不介意在命令行上提供密码(冒着密码保留在命令历史记录中的风险),那么您可以执行以下操作:
openssl passwd -6 YourPassword
它将生成盐,并输出如下行:
$6$/57kpVAA/kuPUtzV$Ugxo0RTL2uXCvU7WH43c1qn0quMy2ve.qiBYJPG75tFgTN8gI5Jp/FYPXFOzIsASqVTqM42kjN2805VYLHKzm1
通过该stdin
选项,它还可以从 STDIN(或文件)读取密码,这样您就不会将其留在历史记录中:
openssl passwd -6 -stdin