可能重复:
是否可以解密md5哈希值?
我使用了 md5.new()
; md5.update("aaa")
, md5.digest()
来形成数据 "aaa"
的 md5 哈希值。如何使用 Python 获取原始数据?
可能重复:
是否可以解密md5哈希值?
我使用了 md5.new()
; md5.update("aaa")
, md5.digest()
来形成数据 "aaa"
的 md5 哈希值。如何使用 Python 获取原始数据?
你无法做到这一点。这就是关键——哈希是单向的,它不同于加密。
h(x)=y
,其中h
是哈希函数,x
是输入,y
是输出。只有当存在任何这样的x
和z
,使得h(x)=y
并且 h(z)=y
,假设x != z
,哈希才是单向的。假设h(x)
只是一个标识符(比如说x
是整数或字符类型),甚至只是一个简单的旋转。这将完全可逆,因此不是单向的。 - Nathan Ernst除了其他人的观点,MD5是一种单向哈希。通常用法是对两个输入值进行哈希,如果哈希值匹配,则输入应该是相同的。从MD5哈希值到哈希输入的转换是没有意义的。你可能需要的是对称加密算法 - 可以参考双向密钥加密/哈希算法来进行讨论。
哈希将一堆数据映射到有限(虽然很大)的一组数字值/字符串。
它是多对一映射,因此在密码学意义上不仅“困难”,而且在概念上不可能解码哈希,即使您可以,您也会得到无限的可能输入字符串集合。