md5pass 和 md5sum 之间的区别

md5pass 和 md5sum 之间的区别

这个问题可能很疯狂,但由于哈希算法的定义,哈希算法是某种接受可变长度输入并对其进行加密的函数,而输出始终具有固定长度,并且对于相同的输入具有相同的输出?考虑以下结果:

root@kali:~# echo "ENDER" | md5pass
$1$rdMOD9CB$LJtbTfwAM3aLuI8L2xOb5.
root@kali:~# echo "ENDER" | md5pass
$1$yINoNkna$Z26YKnZj2foWdTxSGfHOv0
root@kali:~#
root@kali:~#
root@kali:~# echo "ENDER" |md5sum
0ffe655d9777b70867a75c7562657317  -
root@kali:~# echo "ENDER" |md5sum
0ffe655d9777b70867a75c7562657317  -

由于加密 md5pass 哈希程序确实会通过相同的输入更改每个输出,因此 Ubuntu 登录等登录系统如何通过任何输入检测正确的密码?

最后,您能否简要地解释一下这些哈希函数?或者还有其他什么可以区分这两者的东西?谢谢。

答案1

首先,MD5 是一个哈希函数,它读取整个文件/字符串/输入数据并生成默认 128 位长的十六进制格式哈希。当文件或给定字符串相同时,该哈希始终相同。

使用实用程序,md5pass您可以执行完全相同的操作,但哈希会被“加盐”。在密码学中,“盐”是随机数据,用作单向函数的附加输入,该函数对密码或密码短语进行哈希处理以提高熵。这就是为什么md5pass总是输出不同的值。

为何要加盐?

问题是,当用户使用相同的密码时,他们拥有相同的哈希值。如果哈希值是随机加盐的,则每个密码的哈希值都不同。盐必须单独保存在另一个表中,因为需要它来验证密码。md5pass盐可以定义(作为第二个参数)。如果没有定义盐,系统会生成一个随机盐。

另一个优点是,如果是 MD5 或 SHA彩虹桌效果不如不加盐,因为不加盐时,每个密码只需计算一次哈希值。

相关内容