在客户端 - 服务器体系结构中识别和比较文件的最佳方法

时间:2011-12-31 05:09:20

标签: hash comparison checksum crc

我有一个DataStore用于存储数据集。用户可以将数据集上传到数据存储区,但首先会检查数据集是否存在于DataStore中,并且只有在返回值为false时才会上传。见序列图:

UML 2.2 Sequence diagram

这是通过识别具有校验和的数据集并将客户端校验和与DataStore中的校验和进行比较来实现的。现在的算法是CRC32。经过一些研究后发现,由于生日问题,这可能是不安全的:With CRC32, for 1% probability of collision, there needs to be 9300 datasets, and 5000 datasets for 25% probability

这些数据表明这对CRC32来说风险很大。校验和需要很容易计算,因此不会给客户端带来太多负担。有没有办法 - 可能是一个棘手的二次检查 - 告诉具有匹配校验和的数据集是否有所不同?或者唯一的方法是通过考虑最大数据集量来选择具有更多位的函数?

PS:我知道;有关文件比较的各种问题已经被提出,但我找不到任何可以回答我所有问题的问题。

1 个答案:

答案 0 :(得分:0)

它无法避免冲突,因此请使用更多位的哈希来最小化冲突的可能性。