2011-08-01 35 views
5

我想知道......什么是将被哈希的字符串的最大长度?什么是将被散列的字符串的最大长度?

例如,用SHA-1散列Hello, world!是没问题的。但是那个字符串像100,000,000个字符长呢?它甚至工作吗?它以某种方式增加碰撞可能性?

是否有任何限制?

回答

8

Wikipedia将SHA-1的最大消息大小以位为单位显示为2^64-1。所以,这将是2^60-1 unicode字符。小数1,152,921,504,606,846,975字符。

大多数语言字符串限制为2GB - 1个字符。

碰撞概率取决于birthday problem,特别是“概率表”位。我 不够聪明 懒得使用SHA-1与100MB字符串集合发生冲突的概率...

+1

冲突概率取决于您散列的字符串数量,而不是每个字符串的长度串。你将不会碰到任何单个字符串,因为你只有一个值... –

+0

@Thomas Pornin:是的,我说“100MB字符串的集合”。而且这将是一个相当大的集合与所有permuatations等 – gbn

3

您可以散列长输入。是的,哈希算法仍然适用于大型输入。不,更大的输入不会增加碰撞概率。 (但他们需要更长的时间。)您应该记住,1亿个字符对于计算机来说并不是那么多字节,而今天大多数散列使用的是快速。这需要一台现代计算机,可能需要几秒钟的时间来散列一个长的字符串。

没有理论限制,实际限制允许任何合理使用。

相关问题