gpt4 book ai didi

hash - "decrypt"MD5 散列怎么可能是不可能的?

转载 作者:行者123 更新时间:2023-12-02 09:38:55 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




8年前关闭。




Possible Duplicate:
How come MD5 hash values are not reversible?



我正在阅读一个关于 MD5 的问题,它让我想起了一些令我难以置信的事情。非常简单的问题,如果它不是一个好问题,我很抱歉。我只是无法理解您如何使用某种算法将某物转换为一物,并且无法反向使用该算法将其转换回。

那么这怎么可能呢?

此外,由于多个字符串可以创建相同的 MD5 哈希,因为它的数据比输入字符串少,那么其他哈希系统如何更好?

最佳答案

基本上这是因为 MD5 的输出包含的信息少于输入。这基本上是散列算法与加密算法的区别。

这是一个简单的例子:想象一个算法来计算一个 10 位数字的散列。算法是“返回最后2位数字”。如果我取 8023798734 的散列,我得到 34,但如果你只有 34,你将无法知道原始数字是什么,因为散列算法丢弃了 8 位数字的信息。它与 MD5 相似,不同之处在于散列是通过复杂的过程计算的,而不是仅仅截断部分数据。

那么,一个散列如何比另一个更好呢?一方面,不同的哈希算法可以或多或少地抵抗冲突(当两个输入产生相同的输出时)。冲突的概率与可能的散列输出数量成反比。冲突是散列的一个不受欢迎的特征,因为如果您的数据发生变化,您希望散列也发生变化,因此获得更好的散列算法的一种方法是使用具有更多可能输出的散列。在上面的数字示例中,取最后 4 位数字而不是最后 2 位数字将与给定哈希(技术上称为原像)发生冲突的概率降低到 10000 分之一而不是 100 分之一,因此更有可能所有您拥有的任何集合中的 10 位数字都将具有不同的哈希值。

还有密码安全问题。当您想使用散列来确保某些数据不被篡改时,希望进行篡改的人无法预测哪些输入会产生给定的输出。如果可以,他们将能够以输出(散列)保持不变的方式更改输入数据。再次回到数字示例,假设我将通过电子邮件将号码 1879483129 发送给您,并且该号码保持不变是至关重要的。我可能会调用你并告诉你这个数字的哈希值,即 29,但由于“最后 2 位数字”算法在密码学上并不安全,恶意黑客可能会在途中将数字更改为 5555555529,而你不会不知道有什么区别。

已经表明MD5 is not cryptographically secure (和 SHA-1 is also compromised )。这意味着可以找到对应于任何给定输出的不同输入。它仍然是防止随机位翻转等的一种很好的算法,但是如果有人可能想要故意破坏您的数据,您真的应该使用更安全的东西,例如 SHA-256 或更高版本,可能是 as part of an HMAC scheme .

关于hash - "decrypt"MD5 散列怎么可能是不可能的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2717950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com