1.SFV是什么文件?

SFV (Simple File Verification)(简单文件校验)的简写。
.SFV 文件是一个简单的文本文件,它利用 CRC32 算法来完成简易的文件检测功能,对每个文件计算出一个数值并写入一个.SFV文本文件中。一般下载后会使用SFV工具对下载得到的文件进行计算,并将结果和文件中的结果进行比对,如果不同则表明下载的文件有误,需要重新下载。并用一个程序来计算指定一个或一批文件的校验、大小、日期等,并保存下来。

CRC32: CRC本身是“冗余校验码”的意思。CRC32则表示会产生一个32bit(8位十六进制数)的校验值。由于CRC32产生校验值时源数据块的每一个bit(位)都参与了计算,所以数据块中即使只有一位发生了变化,也会得到不同的CRC32值。

MD5:一种消息摘要算法(也叫单向散列函数)的名称。它通过一定的算法,根据源数据的每一位(bit)最终产生一个128位(bit)的校验值(一个32位的16进制数)。MD5最常见的应用是在密码学里,本文中主要用它来校验文件完整性——如果你觉得上述文字难以理解,那么可以简单的认为MD5就是一种128位的数字签名,用于校验文件是否被修改过即可。

SFV 最常用在RAR、MP3、ISO 等档案格式:



以下是一个SFV文件的内容,你可以用记事本打开查看:

--------------------------------------
; Generated by FlashSFV/WIN v2.3 on 2003-6-29 at 下午 04:44:20
;
; 37678026 七月 19 2001 18:42:00 PowerQuest ServerMagic V4.0 .exe
PowerQuest ServerMagic V4.0.exe 21C32C47
-----------------------------------

蓝色部分的21C32C47就是针对PowerQuest ServerMagic V4.0.exe这个文件的CRC校验码。

2.有什么用?

使用者常常会在网路上下载各类型的档案,然而即使 Internet 上提供了可靠的传输环境,但有时难免会因各种因素使得下载的档案发生错误,和原来上传者提供的档案不完全一样,使用者通常难以查觉。 这时由于无法从文件大小来判断文件是否正确 (文件大小通常和原文件没有差别),而且又没有办法将原始文件拿来和下载的文件实际做比对 (因为原文件在远方的 Server 中),所以这个时候如果对方有提供.SFV 文件,那就好办了

这个 .SFV 档的存在就是为了解决上述问题而产生的。档案的提供者在上传档案时以 SFV 软件为各档案产生出 CRC 信息,并记录在一个 .SFV 文件中,同时一并将此 .SFV 档案随其它各档上传至网路。而网路上其他使用者在下载时也同时将此 .SFV 档传回电脑,然后由 SFV 软件利用此档案的内容对其它档案做 CRC32 检测,由于档案内容一旦有任何改变时,它的 CRC32 检查码便会不同,因此便可以由此值和档案提供者的 CRC 资讯做比对,如果不相同时,便表示下载的档案和原先网路上的档案不相同(没有 100% 下载完全或传输中发生错误),使用者可以再次于网路上重新下载。

除此之外,虽然大部份的压缩软体在压缩时同时会加上自己的CRC 检查码於档案中,以供解压缩时检测,不过有些压缩软件在做分卷压缩时 (multi volumes),由於提供的 CRC 资讯不完全,以致於解压缩时虽然其中有任何档案发生 CRC 错误,但却无法指出是哪些档案发生问题,在最麻烦的情况下,使用者可能因为这个原因而重新下载整个分片压缩包,此时提供者若能先利用 SFV 软件产生简易的额外检测资讯,而使用者下载后先行检测以确任所有档案正确,若有错误也能马上得知是哪些档案有问题,再予以重新下载,便可以省下不少时间

3.相关软件

FlashSFV MagicSFV是制作和做CRC校验的两个小工具,使用很方便顺手