有没有可逆的哈希函数?
像 SHA 和 MD5 这样的哈希函数是不可逆的。我想知道是否存在一些可逆的哈希函数?
有没有可逆的哈希函数?
像 SHA 和 MD5 这样的哈希函数是不可逆的。我想知道是否存在一些可逆的哈希函数?
加密哈希函数的定义包括对原像的抵抗:给定h(x) ,恢复x应该是不可行的。“可逆”的哈希函数与该属性完全相反。因此,你不能拥有一个“可逆哈希函数”,就像你不能拥有对水过敏的鱼一样。
可能你可能想要一个散列函数,对于大多数人来说,它是一个具有所有属性的加密散列函数,但它还包括某种陷阱门,如果你知道一些特定的秘密,它允许反转它。这类事情可能存在,但需要数学,如非对称密码学。我现在不知道这样的结构,但有人可能会根据 RSA 模数来判断一些东西,或者可能是一条椭圆曲线,其坐标取模 RSA 模数(我没有考虑精确的设计,但是我有直觉可以这样做)。
即使是非加密散列通常也不能被反转(这与加密散列的其他特殊属性无关,例如冲突/原像抗性)。通常不可能的原因是您根本没有足够的信息。
散列函数(通常)将N
输入M
位转换为输出位,其中M
是一个小常数,大多数情况下N > M
为真。当然N
不需要大于M
,完全有可能从单个字节生成例如 SHA 散列,但通常散列消息比散列值长(通常长得多)。
这意味着要反转哈希并恢复原始消息,您将不得不使用占卜魔法来填充缺失的信息。有 2 个N-M解决方案,每个解决方案都和其他解决方案一样正确。
因此,例如,如果您使用 SHA 散列一个 36 字节的字符串并尝试反转它,则有2128个解决方案,所有这些解决方案都同样正确。
如果已知输入具有某些众所周知的属性(例如以众所周知的序列开始,From:
如正确的——但这绝不是微不足道的,你永远无法证明你拥有正确的,除非你以前已经知道或者你有另一种验证方式。
也许您正在寻找类似 PKI 的东西,其中一个字符串可以在一端用公钥加密,而在另一端用私钥解密。显然不是哈希,而是一种加密/解密字符串以传递秘密的方法。