/etc/shadow 是旧格式,salt 存储在哪里?

/etc/shadow 是旧格式,salt 存储在哪里?

在 /etc/shadow 中,我有诸如 这样的条目admin:YtChlvAGYzva2:16318:0:99999:7:::。我知道原始密码,并希望以某种方式生成相同的哈希值。但是,openssl passwd -crypt password每次运行它时都会得到不同的结果。我假设涉及到 salt,那么在哪里可以找到用于创建原始哈希值的 salt?

编辑:我设法使用以下命令获取原始哈希:

openssl passwd -crypt -salt Yt password

答案1

盐和加密密码都被混合成字符串 YtChlvAGYzva2。

来自影子密码使用方法

当用户选择或分配密码时,密码会用随机生成的值(称为盐值)进行编码。这意味着任何特定密码都可以以 4096 种不同的方式存储。盐值随后与编码的密码一起存储。

当用户登录并提供密码时,首先从存储的编码密码中检索盐。

现代系统中的密码字符串越长使用 $ 分隔哈希。但对于较旧的系统,它只是被混合在(维基百科):

早期版本的 Unix 使用密码文件 (/etc/passwd) 来存储加盐密码 (以两个字符的随机盐作为前缀的密码) 的哈希值。在这些旧版本的 Unix 中,盐值也与加盐密码的哈希值一起存储在 passwd 文件中 (以明文形式)。

在您的示例中,我认为盐值为“Yt”,加密密码为“ChlvAGYzva2”。它实际上是字符串的前两个字符。

相关内容