sfv格式,是电脑里的一种文件格式,SFV 文件是一个简单的文本文件,它利用 CRC32 算法来完成简易的文件检测功能,对每个文件计算出一个数值并写入一个.SFV文本文件中。一般下载后会使用SFV工具对下载得到的文件进行计算,并将结果和文件中的结果进行比对,如果不同则表明下载的文件有误,需要重新下载。并用一个程序来计算指定一个或一批文件的校验、大小、日期等,并保存下来。
格式说明
Sfv是simple file verification(简单文件校验)的简写,可以以文书编辑或记事本打开本文编写。但通常网上有软件Quicksfv、Flashsfv等可创建。它虽说是文字文件,但不成文,没有规范。有时创建的sfv被其它程序来检验档案使用,会有错误出现:“本文判断错误,并影响crc校验。”只需改正回来,但原理是一样。
校验算法
它采用的是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就够用了)。