所以,我在linux影子文件中有这个条目
google.:$1$8KdNUQ4R$ZYyUXVGhvLgVNpfqus.GX/::1:0:1:1:::
此用户的密码为com
据我所知,$1$
表示使用md5进行哈希处理;
盐是8KdNUQ4R
;而ZYyUXVGhvLgVNpfqus.GX/
本身就是哈希密码。
让我感到困惑的是,我在网上找到的md5生成器生成了一个长度为32个字符的十六进制值,但在这种情况下,散列密码只有22个字符长,绝对不是十六进制。
使用给定的盐从com
到ZYyUXVGhvLgVNpfqus.GX/
需要执行哪些步骤?
修改
所以,我找到了答案。我的问题是我应该使用md5crypt而不是md5。
答案 0 :(得分:4)
如果需要计算特定密码的哈希值,请使用crypt(3):
#include <iostream>
#include <unistd.h>
int main()
{
std::cout << crypt( "com", "$1$8KdNUQ4R" ) << std::endl;
return 0;
}
如果你想知道如何获得它 - salt +密码的md5哈希的结果被base64转换为字符串。
slava@bird:~$ g++ crypt.cpp -lcrypt -o crypt_com
slava@bird:~$ ./crypt_com
$1$8KdNUQ4R$ZYyUXVGhvLgVNpfqus.GX/