如何为 shadow 创建 SHA-512 散列密码?

如何为 shadow 创建 SHA-512 散列密码?

我见过的以前的 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和),它将使用最强的可用参数。...MD5SHA256SHA512

哈希的 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

相关内容