我有一个DataStore
用于存储数据集。用户可以将数据集上传到数据存储区,但首先会检查数据集是否存在于DataStore
中,并且只有在返回值为false
时才会上传。见序列图:
这是通过识别具有校验和的数据集并将客户端校验和与DataStore
中的校验和进行比较来实现的。现在的算法是CRC32。经过一些研究后发现,由于生日问题,这可能是不安全的:With CRC32, for 1% probability of collision, there needs to be 9300 datasets, and 5000 datasets for 25% probability。
这些数据表明这对CRC32来说风险很大。校验和需要很容易计算,因此不会给客户端带来太多负担。有没有办法 - 可能是一个棘手的二次检查 - 告诉具有匹配校验和的数据集是否有所不同?或者唯一的方法是通过考虑最大数据集量来选择具有更多位的函数?
PS:我知道;有关文件比较的各种问题已经被提出,但我找不到任何可以回答我所有问题的问题。
答案 0 :(得分:0)
它无法避免冲突,因此请使用更多位的哈希来最小化冲突的可能性。