我最近看了一篇关于password hashing的文章。为什么MD5/SHA1密码哈希无法解密?
如何创建MD5或SHA1哈希以使其无法解密?我认为,它必须通过某些FORMULA来加密字符串(它总是给同一个字符串使用相同的散列;所以不能有随机化),这就是为什么我们应该能够用相同的FORMULA解密它?或者人们不知道论坛?
我最近看了一篇关于password hashing的文章。为什么MD5/SHA1密码哈希无法解密?
如何创建MD5或SHA1哈希以使其无法解密?我认为,它必须通过某些FORMULA来加密字符串(它总是给同一个字符串使用相同的散列;所以不能有随机化),这就是为什么我们应该能够用相同的FORMULA解密它?或者人们不知道论坛?
MD5和SHA1不是加密算法。他们是哈希算法。它是单向公式。对特定字符串运行MD5或SHA1会产生始终相同的散列。不可能将函数反转回原始字符串。
例如:
15国防部4 = 3
即使你知道公式是
在x mod 4
你不能推断x,因为它可能是3,7,11,15等...
显然,MD5和SHA1要复杂得多!
在上面的例子中,输入15总是会给你3的答案,但是没有人能够推导出原始数字。这不会导致很好的碰撞,其中多个输入字符串可以给相同的哈希:
http://en.wikipedia.org/wiki/MD5#Collision_vulnerabilities
维基百科所使用的特定算法的信息:
好吧,那有道理... –
谢谢!这是我正在寻找的那种例子! – Gabo
一切都是正确的斗志解释,我想补充一点:
15 Mod 4 = 3
即使你知道公式是
在x mod 4
你不能推断出X,因为它可能是3,7,11,15等
我们可以去连更接近我们的情况,并有行动的结果(如你有哈希值作为动作和动作描写的结果)
在x mod 4 = 3
x可以是12,13,14或15,它不会告诉我们输入了什么样的整数。
但是用这个公式找到与输出相匹配的输入很简单。因此找到第一个原像很简单。密码散列的一个重要属性是,您无法找到与给定输出匹配的任何输入。 – CodesInChaos
我一直认为md5和sha1不能被解密,并在我的应用程序中使用。但令我惊讶的是,我发现了一些执行该程序的网站。 见http://www.crypt-security.com/ 因此,这个程序是不够安全的
由逆公式。我离密码学专家很远,但其思想是你有两个功能:可以在合理时间内计算的加密(明文)和解密(密文),这至少不能没有密钥。通常你可以做的最好的事情是通过加密函数运行所有的明文,直到你找到正确的。这需要指数时间,并由此导致方法的安全性。 –
@PanayiotisKarabassis MD5和SHA1不是加密算法,不能解密。他们是哈希函数。您的评论有点误导。 – psych
确实。对不起... –