/etc/passwd 和 /etc/shadow 中的密码是用什么方法加密的?

Nat*_*man 21 password hashsum

仔细检查/etc/passwd/etc/shadow文件显示存储的密码是使用某种形式的散列函数散列的。

快速谷歌搜索显示,默认情况下,密码使用DES 加密。如果条目以 开头$,则表示使用了其他一些散列函数。

例如,我的 Ubuntu 机器上的一些条目以$6$...

不同的数字代表什么?

Mik*_*kel 31

完整列表在man 3 crypt网络版)中:

          ID  | Method
          -------------------------------------------------
          1   | MD5
          2a  | Blowfish (on some Linux distributions)
          5   | SHA-256 (since glibc 2.7)
          6   | SHA-512 (since glibc 2.7)
Run Code Online (Sandbox Code Playgroud)

(河豚可以是$2$$2a$根据Wikipedia Crypt (Unix)。)

所以$6$意味着SHA-512

您的系统使用哪一个由传递给pam_unix PAM 模块的任何选项控制。

最新版 Ubuntu 的默认设置为/etc/pam.d/common-password

password        [success=1 default=ignore]      pam_unix.so obscure sha512
Run Code Online (Sandbox Code Playgroud)

这意味着下次您更改密码时,它将使用 SHA-512 进行散列,假设您的帐户是本地帐户,而不是 NIS/LDAP/Kerberos 等。

也可以看看:

  • 请注意,基于 SHA-2 的 crypt 哈希不是普通的 SHA-2,这会很糟糕,因为普通的 SHA-2 对字典攻击的抵抗力很弱。SHA-2 加密方案使用普通哈希作为构建块,但添加了可变工作因子(以减缓字典攻击)和盐。 (4认同)