哈希unix影子文件的密码

时间:2013-03-01 19:23:34

标签: hash hex md5 shadow

所以,我在linux影子文件中有这个条目

google.:$1$8KdNUQ4R$ZYyUXVGhvLgVNpfqus.GX/::1:0:1:1:::

此用户的密码为com

据我所知,$1$表示使用md5进行哈希处理; 盐是8KdNUQ4R;而ZYyUXVGhvLgVNpfqus.GX/本身就是哈希密码。

让我感到困惑的是,我在网上找到的md5生成器生成了一个长度为32个字符的十六进制值,但在这种情况下,散列密码只有22个字符长,绝对不是十六进制。

使用给定的盐从comZYyUXVGhvLgVNpfqus.GX/需要执行哪些步骤?

修改

所以,我找到了答案。我的问题是我应该使用md5crypt而不是md5。

1 个答案:

答案 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/