-3

是否可以从 SHA-1 加密消息中检索原始消息?如果我有一条 SHA -1 加密消息,我需要哪些参数才能从中获取原始消息?

4

5 回答 5

6

我已经回答了一个类似的问题:Python SHA1 DECODE function

简而言之,不,这是不可能的。散列的重点是取一些长字符串并将其变成一个小字符串。散列是破坏性的,你会丢失数据,所以它是不可逆的。

此外,为了让事情更有趣,无限多的字符串具有相同的哈希1。除非您了解有关输入的更多信息,否则不可能生成具有给定哈希的唯一字符串。


1:有大量的散列函数,有些可能具有“特殊”散列,仅在您向函数提供特定输入时才会生成。除了那些罕见的情况(如果它们甚至存在的话),每个其他输出哈希都有无限多的输入字符串。

于 2012-06-11T05:03:54.690 回答
2

http://en.wikipedia.org/wiki/Cryptographic_hash_function

 it is infeasible to generate a message that has a given hash
于 2012-06-11T04:58:14.557 回答
1

散列不是加密。加密就像将拼图游戏的碎片洗牌。散列更像是将碎片放入搅拌机中,之后没有合理的方法可以恢复原始图片。

于 2012-06-11T05:08:14.520 回答
1

SHA-1哈希从任意大小的输入生成 160 位输出。由于可能的输入多于2^160可能的输出,因此必然会发生冲突,即。不同的输入具有相同的输出。

这意味着有可能(通过蛮力或通过利用算法中的弱点——我认为目前尚不知道)找到与给定哈希相对应的消息,但它可能不是原始消息。

即使固定输入的大小,如果大于 160 位,也会发生冲突,并且无法反转散列函数。

于 2012-06-11T05:11:12.777 回答
0

如果您知道原始消息的长度(512 位的倍数),则只需测试该大小的 2^512 个输入。对每个应用 SHA1 操作,并比较结果。这假设没有加盐,以及相当大量的计算资源。

于 2012-06-11T05:02:40.950 回答