1

使用 10 个字符的哈希来识别电子邮件地址有多可靠?

MailChimp 为电子邮件地址提供 10 个字符的字母数字 ID。10 个字符 4 位,每个 40 位,略超过一万亿。也许对于像 MailChimp 这样规模的企业来说,这为唯一的索引空间提供了合理的空间,并且他们有一个包含所有可能电子邮件的表,并使用 40 位数字进行索引。

我喜欢使用相同样式的哈希或编码 ID 来包含在链接中。要决定是使用索引还是散列,需要估计两个有效电子邮件地址导致相同 10 字符散列的概率。

除了原始测试之外,有什么提示可以评估自定义哈希函数吗?

4

1 回答 1

1

您没有明确说明“可靠”的含义,但我认为您是在尝试避免冲突。正如 wildplasser 所说,对于随机标识符,这完全是关于生日悖论,当使用 2^(n/2) 个 ID 时,具有 2^n 个 ID 的标识符空间发生冲突的可能性达到 50%。

关于生日攻击的维基百科页面有一个很好的表格,说明了各种参数下的碰撞概率;例如,对于 64 位和 1 百万分之一的最大冲突概率,您可以拥有大约 600 万个标识符。

请记住,用字符表示数据的方法比十六进制更有效;例如,base64 每 4 个字符为您提供 3 个字节,这意味着 10 个字符为您提供 60 位,而不是 40 位十六进制。

于 2011-10-24T06:48:47.883 回答