是否可以从 SHA-1 加密消息中检索原始消息?如果我有一条 SHA -1 加密消息,我需要哪些参数才能从中获取原始消息?
5 回答
我已经回答了一个类似的问题:Python SHA1 DECODE function
简而言之,不,这是不可能的。散列的重点是取一些长字符串并将其变成一个小字符串。散列是破坏性的,你会丢失数据,所以它是不可逆的。
此外,为了让事情更有趣,无限多的字符串具有相同的哈希1。除非您了解有关输入的更多信息,否则不可能生成具有给定哈希的唯一字符串。
1:有大量的散列函数,有些可能具有“特殊”散列,仅在您向函数提供特定输入时才会生成。除了那些罕见的情况(如果它们甚至存在的话),每个其他输出哈希都有无限多的输入字符串。
http://en.wikipedia.org/wiki/Cryptographic_hash_function
it is infeasible to generate a message that has a given hash
散列不是加密。加密就像将拼图游戏的碎片洗牌。散列更像是将碎片放入搅拌机中,之后没有合理的方法可以恢复原始图片。
SHA-1
哈希从任意大小的输入生成 160 位输出。由于可能的输入多于2^160
可能的输出,因此必然会发生冲突,即。不同的输入具有相同的输出。
这意味着有可能(通过蛮力或通过利用算法中的弱点——我认为目前尚不知道)找到与给定哈希相对应的消息,但它可能不是原始消息。
即使固定输入的大小,如果大于 160 位,也会发生冲突,并且无法反转散列函数。
如果您知道原始消息的长度(512 位的倍数),则只需测试该大小的 2^512 个输入。对每个应用 SHA1 操作,并比较结果。这假设没有加盐,以及相当大量的计算资源。