将要散列的字符串的最大长度是多少?

时间:2011-08-01 08:59:08

标签: hash sha1

我想知道......将要散列的字符串的最大长度是多少?

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

有没有限制?

2 个答案:

答案 0 :(得分:10)

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

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

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

答案 1 :(得分:3)

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

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