【问题标题】:What is probability of collision in CRC32 in first 4.2Billion前 42 亿个 CRC32 中的碰撞概率是多少
【发布时间】:2021-08-06 13:35:19
【问题描述】:

我使用数字作为输入,长度为 10 个字符。

EG。 输入 - 8429294732 输出 - 96325be7

crc32 的总可能性是 16^8,大约是 42 亿。

有谁知道这里的碰撞几率是多少?

你能解释一下吗。

【问题讨论】:

  • 32 位数据如何存储 16^8 个不同的值?
  • 前42亿什么?前 42 亿个随机 10 个字符串?至少有一次碰撞的可能性几乎为 100%。

标签: collision-detection crc32


【解决方案1】:

假设您的输入使用了 10 位数字的全部范围,这将为您提供 10^10 个不同的数字,并将其映射到 CRC32 生成的 16^8=2^32 个数字。因此,平均而言,您有 (10^10)/(2^32)=2.3 个数字映射到生成的每个可能的 CRC32 值。 所以,你的问题的答案是你有 100% 的碰撞机会。

【讨论】:

    【解决方案2】:

    this answer

    假设您的意思是统一、独立概率的十进制数字,那么您的输入将导致可能的 32 位 CRC 值的覆盖率大约为 90%。我们将使用 n = 0.9 232 的公式,根据问题标题我假设 k = 232。您将有大约 20 亿次碰撞。如果输入是随机选择的,not 发生冲突的几率约为 10-1036266998。在实际中也称为:零。

    (顺便说一句,你的“大约 42 亿”,应该是大约 43 亿。)

    【讨论】:

    • 您能否详细说明您的断言“90% 覆盖可能的 32 位 CRC 值”?源有 10^10 个可能的符号和 CRC,4.3x10^9。谢谢!
    • 如果你在一个有 2^32 个飞镖点的飞镖板上随机投掷 10^10 个飞镖(并且它们都击中了飞镖板),那么大约 90% 的飞镖点会被飞镖击中。
    • 平均为 90.254%。
    • 啊!鸽巢原理!知道了!谢谢!
    猜你喜欢
    • 2013-05-30
    • 2010-12-03
    • 1970-01-01
    • 2014-04-18
    • 2011-11-19
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 2018-05-15
    相关资源
    最近更新 更多