passwd 中使用的默认 SHA512 盐以及影子文件中存储的哈希值是什么?

passwd 中使用的默认 SHA512 盐以及影子文件中存储的哈希值是什么?

我想使用 useradd 添加用户并使用 -p 标志指定加密密码。我了解到我所在的 unix 系统使用 SHA512 哈希在 /etc/shadow 文件中存储密码。当我查看 /etc/pam.d/common-password 时,它说:

# Explanation of pam_unix options:
#
# The "sha512" option enables salted SHA512 passwords.  Without this option,
# the default is Unix crypt.  Prior releases used the option "md5".
#
# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in
# login.defs.
#
# See the pam_unix manpage for other options.

# here are the per-package modules (the "Primary" block)
password        [success=1 default=ignore]      pam_unix.so sha512

我只需要知道盐是什么,这样我就可以生成哈希并将其与我的

useradd ... ... -p INSERT_HASHED_PASS_HERE

答案1

Salt 是一个[理想情况下]随机生成的值,它会在两个用户碰巧拥有相同密码的情况下引入一些密码变化。使用随机盐,用户可以在多个系统上拥有相同的密码,但这并不明显。您尝试做的事情似乎规避了对哈希加盐的目的。

我假设您正在尝试生成一次密码哈希并在多个地方使用它以实现自动化目的。

当将任意字符串作为盐传递时,有几个实用程序可用于生成密码哈希。然而,正如我所说,你从一开始就否定了盐的用途。

答案2

最好将其留给passwd在 /etc/shadow 文件中创建和添加用户密码的命令。同样如前面的答案所述,盐应该是随机的以保持散列唯一。

但如果您仍然希望该命令生成密码哈希,您可以使用以下命令:

选项1:

openssl passwd -6 -salt $(openssl rand -base64 12) yourpassword

这里:

  • -6 表示 sha-512 加密算法。
  • openssl rand - 生成随机盐
  • yourpassword 是您要进行哈希处理的密码。

选项2:

mkpasswd --method=SHA-512 --stdin

这应该有效。

参考:

生成 Linux 哈希密码

手动生成密码

相关内容