对 SFV & CRC & MD5 的说明

| |
[阴 2006/09/15 03:18 | by Bushi ]
对SFV & CRC & MD5 的说明
  在下载时经常可以看到一些 .sfv 的文件,到底这种文件是这么回事呢,这里有比较详细的说明。
  
  sfv 是 Simple File Verification(简单文件校验)的简写,它采用的是 crc32 的校验算法。
  crc32 校验产生 32bit(8 位十六进制数)校验值,所以一般大家看见的文件“ sfv 值”是一个 8 位的 16 进制数。
  由于 crc32 产生校验值时源数据块的每一个bit位都参与了计算,所以数据块中即使一位bit发生变化,也会得到不同的 crc32 值(但对于两个完全不相干的文件是有可能有相同校验值的,因为校验值的取值空间有限——2^32,而现实中文件数量一定是大大超过这个值了)。
  
  关于crc32校验的具体算法,大致的过程是(没兴趣的可以忽略这一段):
  采用多项式除法,将一个数据块(不论大小)中的每一位(bit)作为各项系数来生成一个很长的多项式(例如对一个16进制的数F0h,可以生成多项式 1*X^7 + 1*X^6 + 1*X^5 + 1*X^4 + 0*X^3 + 0*X^2 + 0*X^1 + 0*X^0 ,化简一下,就变成 X^7 + X^6 + X^5 + X^4 ),然后将生成的多项式除以如下被称为“发生器多项式”的特殊多项式( X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+1 ),取结果的余数部分,就是我们需要的 crc32(也就是sfv)值了。至于除法的具体算法,有硬件实现也有很多软件实现,这里就不再赘述。
  
  md5 是一个消息摘要算法(也叫单向散列函数)的名称。它通过一定的算法(任何有关应用密码学的书里都有具体的算法表述)根据源数据的每一位 bit 最终产生一个128bit(32位十六进制数)的校验值。由于长度达到一定的要求,所以在密码学领域中有一定应用(用它来校验文件理论上讲由于有更大的取值空间而肯定比 sfv 更安全,但实际上似乎 sfv 就够用了)。
Tags:
资料收藏 | 评论(0) | 引用(0) | 阅读(1251)
发表评论
表情
emotemotemot
emotemotemot
emotemotemot
emotemotemot
emotemotemot
emotemotemot
emotemotemot
emotemotemot
emot
打开HTML
打开UBB
打开表情
隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写