关于MD5的一般问题

时间:2010-04-26 22:34:35

标签: php md5 hash

所以我只是玩PHP和MD5功能,对不起,如果听起来真的很傻,但我似乎无法理解,怎么可能在32位字符输出中表示无限数量的输入字符?我的逻辑声音在这里吗?或者MD5功能可以输入的限制是什么?

...谢谢

7 个答案:

答案 0 :(得分:4)

不是。像所有哈希函数一样,存在冲突,但它们应该对攻击者来说是不可预测和无用的。但是,MD5完全受到了损害。一组successfully used MD5冲突,以创建未批准的证书颁发机构。有人会注意到野外没有 preimage 攻击,但我认为是时候保释MD5了。

答案 1 :(得分:3)

md5并不代表整个内容:它只是......好吧,怎么说使用非技术术语?假设md5是您内容的某种简短摘要。

给定的内容总能让你获得相同的md5;并且内容中的一点点差异几乎总会让你得到一个非常不同的md5 - 所以md5 (或其他哈希算法)通常用作检查文件是否已损坏的方法(例如,在转移期间)

但是,如果您有md5,则无法获取内容:您无法从摘要重新生成内容。

答案 2 :(得分:2)

我认为你可能会因压缩或加密而混淆MD5'哈希'。

哈希码只是一个流程的产物,它通过数据生成可能对给定输入唯一的数据。 MD5哈希不包含所有数据,只是数据“指纹”的唯一表示。

答案 3 :(得分:1)

  • 类比:指纹。

  • 怎么可能?哈希函数通常依赖于某些properties ...

  • 的存在
  • 有限制吗?了解md5 collision ...

答案 4 :(得分:1)

任何哈希算法都可以有Collision。您根本无法在其使用的空间量中表示所有信息。否则,我们都会使用散列算法而不是压缩算法。

碰撞碰撞的可能性非常小。对于像密码这样的东西,它们的内容通常非常小。使用相同哈希的冲突可能会大得多,也会出现乱码。使用ISO,冲突文件甚至可能无法启动。存档文件可能无法提取。

MD5有几种方法可供人们查找给定哈希的冲突。我确定其他哈希算法也可以。我相信md5有一些碰撞问题,你可以在没有散列更改的情况下改变少量,这就是为什么很多人不建议使用它。

有些地方还存储文件长度(或内容长度)。这有助于防止碰撞攻击。

答案 5 :(得分:0)

MD5不具有唯一的目的,而是可以通过传输或故意告诉您某个位流(例如文件)是否未被破坏。想要以任何方式更改文件的人都不太可能想出相同的MD5值,因此下载站点会使用它来确保您获得正确的文件。

答案 6 :(得分:0)

它不仅可能,而且是一个不可避免的事实,即有许多消息会产生相同的散列。这些通常被称为碰撞。但它非常非常很难找到它们。哈希只是一个生成结果的函数,在不知道原始输入的情况下实际上无法预测。

请注意,虽然有些人(甚至试图回答你的问题)认为md5是不安全的,但事实是它仍然适用于大多数目的,尽管如果你推荐我最近的哈希之一运行贝宝或控制一支核武器的发射台。

(在任何人开始用愚蠢的回复给我发火焰之前,告诉我我得到了什么:b958cf404456ceb1302015102ec57a64)

下进行。