我试图用 grub 密码保护它grub2-mkpasswd-pbkdf2
并且它适用于 centos 7,但我无法理解它。
每次我使用此命令时,它都会为我提供一个唯一字符串(如 1234)的不同哈希密码。
结果就像
grub.pbkdf2.sha512.10000.5A9xxx
grub.pbkdf2.sha512.10000.E18xxx
Run Code Online (Sandbox Code Playgroud)
我的问题是:
这两个散列密码在将它们复制到 10_unix 文件和更新 grub 之后如何工作,以及登录过程如何将我的纯密码与 10_unix 文件中的散列文本进行比较?
我的意思是它似乎不像 md5() 这样的东西,每次我们使用它时,一个唯一字符串的结果都是相同的。
PBKDF2是加盐的密码哈希,这意味着除了密码之外,哈希函数还将另一个字符串作为输入,即盐,它是在设置或修改密码时随机生成的。这里的想法是攻击者无法预先计算与常见密码相对应的哈希值,因为他们也需要盐。此外,如果多个帐户碰巧有相同的密码,这并不明显,因为散列是随机的。盐作为密码散列的一部分存储,为了将明文密码与散列密码进行比较,从散列中读取要使用的正确盐。
与普通的加密哈希函数(如 MD5 或 SHA-256)相比,PBKDF2 也是迭代的,这意味着它在循环中多次运行底层哈希(至少数千次)。这只是为了使散列的计算速度变慢,增加了通过蛮力猜测与散列匹配的密码的成本。
在 的情况下grub
,散列的格式似乎是
grub.pbkdf2.sha512。[迭代] . [盐]。[哈希]
系统使用的密码哈希(/etc/shadow
,参见crypt手册页)也被迭代和加盐,因为任何正确的密码哈希都应该是。
有关密码散列的更多信息,请参阅 如何安全地散列密码?关于安全