【发布时间】:2013-04-04 03:07:43
【问题描述】:
我知道如何加密:
encrypted = hashlib.sha256('1234').hexdigest()
但我不确定,如何解密?
decrypted = decrypt(encrypted)
【问题讨论】:
-
哈希不是这样工作的。通常,哈希的全部意义在于它无法撤消。散列不是一种加密技术。
-
wikipedia 有一篇关于哈希的好文章
-
想想吧。如果您可以“解密”一个非常短的哈希(SHA256 为 32 个字节),您将拥有终极压缩方法。但是当然你不能,对于任何比散列长的数据,都存在散列冲突,换句话说,不同的数据会产生相同的散列(但是对于像 SHA256 这样的加密安全散列,你实际上无法找到或创建与当前或可预见的计算机)。
-
为什么会存在冲突,举个简单的例子:en.wikipedia.org/wiki/Pigeonhole_principle
-
从 sha1 取回原始字符串的唯一方法是暴力破解。任何散列函数都没有解密函数。这就是散列的全部意义所在。然而 sha1(small string) 可以被强制取回原始字符串。