我知道MD5会产生128位摘要。我的问题是,它如何从128位+?
的消息中产生这个固定长度的输出修改
我现在对哈希函数有了更深入的了解。在阅读this article之后,我意识到哈希函数是单向的,这意味着您无法将哈希转换回纯文本。由于所有的在线服务都将它们转换回字符串,我感到非常困难,但我已经意识到那只是彩虹表(字符串的集合映射到预先计算的哈希)。
答案 0 :(得分:7)
生成MD5 hash时,您不会压缩输入数据。压缩意味着您将能够将其解压缩回原始状态。另一方面,MD5是一个单向过程。这就是它用于密码存储的原因;理想情况下,您必须知道原始输入字符串才能再次生成相同的MD5结果。
此页面提供了一个很好的图形说明MD5和类似哈希函数的说明,以及如何使用它们:An Illustrated Guide to Cryptographic Hashes
答案 1 :(得分:3)
考虑类似于从128位值开始,一次输入128位,并使用现有值对每个输入块进行异或运算。
MD5比这复杂得多,但一般的想法是相同的:输入一次处理128位。每个输入块都可以更改结果的值,但不会影响长度。
答案 2 :(得分:1)
它已经注意到(或者,更好,很少)与压缩有关。有一个algorithm可以为每个初始状态生成一个新的状态。这种状态或多或少是这种输入组合所独有的。
答案 3 :(得分:1)
简而言之,它将分成许多部分并进行操作。
如果您对collsion感到疑惑,请考虑您的消息只是可读的。
位空间比可读字符空间大得多。