Algorithm md5哈希算法如何将数据压缩到固定长度?

Algorithm md5哈希算法如何将数据压缩到固定长度?,algorithm,compression,md5,bits,Algorithm,Compression,Md5,Bits,我知道MD5生成128位摘要。我的问题是,它如何从128位+的消息中产生这种固定长度的输出 编辑: 现在我对哈希函数有了更深入的了解。阅读之后,我意识到散列函数是单向的,这意味着不能将散列转换回明文。我误以为你可以,因为所有的在线服务都将它们转换回字符串,但我意识到这只是彩虹表(映射到预先计算的哈希的字符串集合)。它与压缩无关(或者更好,很少)。有一个字节,它为每个初始状态生成一个字节,并生成一个新状态。这种状态或多或少是这种输入组合所特有的。简言之,它将分成许多部分并执行操作 如果你对Cout

我知道MD5生成128位摘要。我的问题是,它如何从128位+的消息中产生这种固定长度的输出

编辑:


现在我对哈希函数有了更深入的了解。阅读之后,我意识到散列函数是单向的,这意味着不能将散列转换回明文。我误以为你可以,因为所有的在线服务都将它们转换回字符串,但我意识到这只是彩虹表(映射到预先计算的哈希的字符串集合)。

它与压缩无关(或者更好,很少)。有一个字节,它为每个初始状态生成一个字节,并生成一个新状态。这种状态或多或少是这种输入组合所特有的。

简言之,它将分成许多部分并执行操作

<>如果你对CouthIs感到好奇,请考虑你的信息是可读的。
位空间比可读字符空间大得多。

考虑类似于从128位值开始,一次输入128位,然后用现有值对每个输入块进行异或运算

MD5比这复杂得多,但总体思路是相同的:一次处理128位输入。每个输入块都可以更改结果的值,但对长度没有影响。

生成输入块时,不压缩输入数据。压缩意味着您可以将其解压缩回原始状态。另一方面,MD5是一个单向过程。这就是为什么它被用于密码存储;理想情况下,您必须知道原始输入字符串才能再次生成相同的MD5结果


本页提供了有关MD5和类似哈希函数以及它们的使用方法的精美的图形说明:

但是如果消息大于最大哈希摘要大小(MD5为128位),该怎么办?然后它做什么呢?该算法将消息分割成块,然后将每个块逐一混合到散列中。整个消息构成了散列的最终值,但该算法一次只查看一个块。好吧,希望不要使用MD5作为密码(或者现在有许多替代/更好的选项),但总体思路是相同的+1;-)该术语用于描述加密哈希函数,但其含义与通常的Zip/Bzip/7Zip含义不同。