首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个数据块产生相同CRC64值的可能性有多大?

两个数据块产生相同CRC64值的可能性有多大?
EN

Stack Overflow用户
提问于 2011-05-17 09:56:45
回答 2查看 4.3K关注 0票数 5

我有一个缓存应用程序,它使用CRC64值来确保数据完整性。我正在考虑添加一个额外的字段,一个时间戳,用于在不同的缓存服务器之间传递数据,并进行比较,以查看数据是否发生了更改。

但是,这需要更改协议。虽然这不是什么大问题,但我已经有了一个CRC64,它可以用来指示一些事情已经发生了变化。

有谁知道产生相同CRC64的两个数据块的统计数据吗?如果不是,我如何计算它或估计它的可能性?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-17 10:04:10

如果你假设crc64是“完美的”,那么这些数字是相当合理的:

For a 1% probability of collision, you need 6.1 × 10^8 entries. For a 50% probability of collision, you need 5.1 × 10^9 entries.

当然,如果数据可能是由恶意来源提供的,那么像crc64这样简单的散列中的冲突可能很容易生成,并且冲突可能会很猖獗。因此,您是否走这条路线取决于输入数据的来源和冲突的潜在后果。

票数 7
EN

Stack Overflow用户

发布于 2011-05-17 10:21:31

不同随机数据上的两个CRC64s相同的概率接近1/ 2** 64。但由于CRC对数据模式有些敏感,因此可能会出现一些退化的情况,您可能会失去几个二进制保护顺序。可能不可能给出一个确切的数字,但你很可能会安全地假设最坏的情况下碰撞的可能性将小于1/ 2** 50左右。

如果您使用加密散列而不是CRC64,则可以确保更接近理论上的限制,但是加密散列的计算成本通常要高得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6025445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档