我想知道......将要散列的字符串的最大长度是多少?
例如,使用SHA-1散列Hello, world!
没有问题。但那个字符串就像100'000'000字符长呢?它甚至有用吗?它是否会以某种方式增加碰撞的可能性?
有没有限制?
答案 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 。现在的计算机可能需要几秒钟才能散列很长的字符串。
没有理论限制,实际限制允许任何合理使用。