關於SFV的小知識(轉)

post0發表於2007-08-11
關於SFV的小知識(轉)[@more@]

在下載Warez時經常可以看到一些.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就夠用了)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-946241/,如需轉載,請註明出處,否則將追究法律責任。

相關文章