在 /etc/shadow 我有诸如admin:YtChlvAGYzva2:16318:0:99999:7:::. 我知道原始密码并想以某种方式生成相同的哈希值。但是,openssl passwd -crypt password每次跑步都会给我不同的结果。我假设涉及salt,那么我在哪里可以找到用于创建原始哈希的salt?
编辑:我使用以下命令获得了原始哈希:
openssl passwd -crypt -salt Yu password
Run Code Online (Sandbox Code Playgroud)
盐和加密密码都混入字符串 YtChlvAGYzva2 中。
当用户选择或分配密码时,它会使用随机生成的值进行编码,称为盐。这意味着任何特定的密码都可以以 4096 种不同的方式存储。然后将盐值与编码密码一起存储。
当用户登录并提供密码时,首先从存储的编码密码中检索盐。
您在现代系统中看到的较长密码字符串使用 $ 分隔散列。但是对于较旧的系统,它只是混入(维基百科):
早期版本的 Unix 使用密码文件 (/etc/passwd) 来存储加盐密码(以两个字符随机盐为前缀的密码)的哈希值。在这些旧版本的 Unix 中,salt 也与加盐密码的哈希一起存储在 passwd 文件(作为明文)中。
在你的例子中,我相信盐是“Yt”,加密的密码是“ChlvAGYzva2”。它实际上是字符串的前两个字符。