请教对 n K字节大小的数据块取CRC32校检码的重码概率为多少并且是如何计算的,谢谢!

解决方案 »

  1.   

    个人认为是:n/4M要数学高手来说才好http://lysoft.7u7.net
      

  2.   

    我问这个问题的初衷是想要做一个文件资源管理系统,管理文件数目比较大,大约100万-500万之间,在进行文件更新时需要判断文件是否已经需要更新,可以通过文件大小过滤一部分(但不能按文件名及修改时间来过滤),然后就要按文件内容一个字节一个字节的比较,如果相同就不需要更新,文件数目较小倒也还可以但数目很大时,相当耗费时间,如:有200万个文件的资源系统,每次更新1万个文件,文件大小相同的概率约为万分之一,每个文件平均大小200KB,在大约5%处可以判断文件不同,那需要比较的字节数可达到: 10000*2000000*0.0001*0.2M*5%=20000M=20GB,这是相当耗时的,我想对每个文件取CRC32码来标识该文件,这样不用比较文件内容,只对CRC32码做一个比较就可以了,但不知其重码概率是多少,如果足够小如百万分之一,就可以采用,虽然不够严格但可以基本满足需要了。就请大家帮忙讨论讨论。
      

  3.   

    原来这样我建议你使用MD5/SHA1吧,这个能满足你的要求
    再不行就SHA512,这是最强的:)http://lysoft.7u7.net
      

  4.   

    200W的文件,重复的概率是1/100?
    理论上任何两个文件都有可能计算到相同的CRC32。
    CRC32也就是一个整数,2GB,如果按DWORD,则为4G,
    200W/4G = 1/200的几率相同。