我在 中看到如下的哈希密码短语/etc/shadow
。我不太明白它的格式。
$y$j9T$F5Jx5fExrKuPp53xLKQ..1$X3DX6M94c7o.9agCG9G317fhZg9SqC.5i5rd.RhAtQ7
它由四部分组成,如下所示。根据crypt(5)
,y
意思是yescrypt
。
https://manpages.debian.org/unstable/libcrypt-dev/crypt.5.en.html
- y
- j9T
- F5Jx5fExrKuPp53xLKQ..1
- X3DX6M94c7o.9agCG9G317fhZg9SqC.5i5rd.RhAtQ7
最后三部分的含义是什么?
答案1
回答“以下各部分的含义是什么”crypt(3)
功能”:
id
param
salt
hash
正如更详细的解释这里。
关于新的yescrypt
“密码哈希方案”,第二个字段的含义可以通过阅读来理解这,如果您想了解更多信息,您还可以阅读yescrypt v2 规范。
我做了更多研究,似乎散列发生在函数中yescrypt_r。您可以在代码中看到不同的参数定义。在is 的
情况下,设置为where是 的第一个数字中的数字,然后使用该函数解析 r 和 pid
7
N
2^x
x
param
decode64_uint32_fixed
来自该领域的其余部分param
。
在所有其他情况下(即仅当id
is时y
,因为该函数检查 的值id
,如果不是7
or 则返回y
),源有条件地设置各种不同的参数,并以我觉得尝试的方式编写代码块理解这会违背原作者的意愿。所以我把它作为练习留给读者。
在同一个文件中,函数是的密码接下来它公开了一个更简单的接口,类似于crypt(3)
.