【发布时间】:2012-12-22 00:42:08
【问题描述】:
我在数据库中有一个 10 字符的字符串键字段。我已经使用 CRC32 来散列这个字段,但我担心重复。有人可以告诉我在这种情况下发生碰撞的概率吗?
附言我的字符串字段在数据库中是唯一的。如果字符串字段数为100万,碰撞概率是多少?
【问题讨论】:
标签: algorithm hash collision probability crc
我在数据库中有一个 10 字符的字符串键字段。我已经使用 CRC32 来散列这个字段,但我担心重复。有人可以告诉我在这种情况下发生碰撞的概率吗?
附言我的字符串字段在数据库中是唯一的。如果字符串字段数为100万,碰撞概率是多少?
【问题讨论】:
标签: algorithm hash collision probability crc
在您引用的情况下,基本上可以保证至少发生一次碰撞。至少发生一次碰撞的概率约为 1 - 3x10-51。您预计的平均碰撞次数约为 116。
一般情况下,k 个样本中的平均碰撞次数,每个样本在 n 个可能值中随机选择为:
至少发生一次碰撞的概率为:
在您的情况下,n = 232 和 k = 106。
在您的情况下,三路碰撞的概率约为 0.01。请参阅Birthday Problem。
【讨论】: