Hash SHA-1哈希的最大数目是多少?

Hash SHA-1哈希的最大数目是多少?,hash,cryptography,sha1,sha,hash-collision,Hash,Cryptography,Sha1,Sha,Hash Collision,显然,由于SHA-1哈希每次产生40个字符,因此可能的哈希数是有限的。有人知道确切的哈希数是多少吗?SHA-1哈希有160位,所以有2160位。 (2160=1461501637330902918203684832716283019655932542976~=1.46 x 1048) 请注意,由于您的消息空间比可能的散列大得多,因此必然会发生冲突 还要注意,碰撞的概率比你想象的要高得多。多亏了这一点,只有280条消息发生碰撞的概率为50%。(即:只有23个人,两个人生日相同的概率为50%)SHA

显然,由于SHA-1哈希每次产生40个字符,因此可能的哈希数是有限的。有人知道确切的哈希数是多少吗?

SHA-1哈希有160位,所以有2160位。
(2160=1461501637330902918203684832716283019655932542976~=1.46 x 1048)

请注意,由于您的消息空间比可能的散列大得多,因此必然会发生冲突


还要注意,碰撞的概率比你想象的要高得多。多亏了这一点,只有280条消息发生碰撞的概率为50%。(即:只有23个人,两个人生日相同的概率为50%)

SHA-1产生160位输出,并且应该能够产生几乎任何160位的序列,有2160个这样的序列,即接近1461亿。那有点大

然而,我们没有证据证明它们中的每一个都是可以到达的。如果可能产出的数量大大低于2160,则对SHA-1的安全不利;例如,如果其中只有1/4是可访问的(2158),那么针对前映像攻击的安全性将除以4,针对碰撞的安全性将减半。目前尚不知道SHA-1存在此类问题(SHA-1在抗碰撞方面存在已知的弱点,但不是那个弱点)


有可能(但至少有点令人惊讶)无法达到几个160位的输出。预计这仍然是未知的。在某种程度上,能够证明SHA-1可能的输出覆盖整个160位空间将是令人担忧的:这样的证明需要对SHA-1的数学结构进行大量分析,而SHA-1的安全性很大程度上依赖于这种难以处理的分析。

SHA-1由5个32位整数组成

那是4294967296^5或2^160

或146150116333090291820384832716283019655932542976可能性

要正确看待这一点

可能的SHA-1总值:146150116330902918203684832716283019655932542976 地球上的水总量:365904000000000000000000

包括每个海洋、海洋、湖泊等-


在这一点上,碰撞的可能性只是理论上的。还在等着听呢。

我想问题是哈希函数是否是满射的。Google calc:1.46150164×10^48:-)我要补充的是,可能的SHA-1的数量非常接近sqrt()(只有100的系数):-):-@NullUser:你似乎在混合满射和双射。有满射性或非满射性的证明很可能构成某种函数的中断。看看类似的问题(和答案)。如果你能产生SHA1碰撞,我会给你买一杯啤酒。或者,即使您可以生成2^80条消息,但没有一条。它不会“生成”40个字符。它确实产生160位散列。如果你看到他们在十六进制格式,你会看到40个十六进制数字。没有。40个有符号/无符号字符“通常”为320位(8位/字符)。SHA-1是160位=20字节=40个十六进制数字。你问了一个关于有多少SHA-1散列的精确问题。举个例子,如果我在base64中写一个SHA-1,我会得到一个长28个字符的字符串(其中1是固定的,是终止的
=
),好的,SHA-1哈希由160位=40个十六进制数字组成,如果这样做更好的话,通常会编码成40个字符的字符串。我最后的评论确实是不正确的,考虑到我已经用C写了一个紧凑的SHA1er,这是不好的。我担心的是,你是一个初级程序员,认为DVD-ROM是一个杯托:-),但如果你写了一个SHA-1er,那么你可以想任何你想要的SHA1哈希:-)在这种情况下,它变成了一个“知情的选择”: