Cryptography 什么是FreeBSD MD5?为什么它以非十六进制表示法生成哈希?

Cryptography 什么是FreeBSD MD5?为什么它以非十六进制表示法生成哈希?,cryptography,md5,freebsd,hash-function,Cryptography,Md5,Freebsd,Hash Function,我正在做一个黑客挑战,从黑客这个网站,我发现了一个密码哈希,然后破解它的暴力强迫的可能性。我的散列破解程序(开膛手约翰)使用的格式叫做“FreeBSD MD5”。密码和哈希如下所示: PW:阴影 散列:$1$AAODv…$gXPqGkIO3Cu6dnclE/sok1 我的问题是,MD5通常不是只有字符集0123456789abcdef(十六进制)吗?为什么这个散列突然包含了一堆其他字符 截图: 这是一个咸密码哈希: $是字段分隔符 1是类型(MD5) AAODv。。。是散列的(明文)盐吗 gX

我正在做一个黑客挑战,从黑客这个网站,我发现了一个密码哈希,然后破解它的暴力强迫的可能性。我的散列破解程序(开膛手约翰)使用的格式叫做“FreeBSD MD5”。密码和哈希如下所示: PW:阴影 散列:$1$AAODv…$gXPqGkIO3Cu6dnclE/sok1

我的问题是,MD5通常不是只有字符集0123456789abcdef(十六进制)吗?为什么这个散列突然包含了一堆其他字符

截图:

这是一个咸密码哈希:

  • $是字段分隔符
  • 1是类型(MD5)
  • AAODv。。。是散列的(明文)盐吗
  • gXPqGkIO3Cu6dnclE/sok1是在base64中编码的哈希
salt在散列之前与密码连接,以防止rainbow tables:md5(salt+password)),并且要验证密码,必须在散列之前使用此salt作为前缀


在base64中表示哈希使其比十六进制数字(23对32字节)短一些。

天啊,我应该想到盐哈希-我想我还没有足够的加密经验。但是,为什么base64表示会占用更少的空间?我想,它肯定会有更少的字符-这就是你的意思吗?是的,更少的字符,因此像
/etc/shadow
这样的文本文件中的空间更少-由于编码,十六进制数字在文本文件中存储为8位,而不是4位?是的,文本文件中的每个字符使用8位(无论如何,在通用系统上)。因此,减少字符->节省空间