關於SFV的小知識(轉)
關於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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於null值的小知識Null
- 關於SQL優化的小知識SQL優化
- 關於 JavaScript 字串的一個小知識JavaScript字串
- 那些關於Mac終端的小知識Mac
- 關於redo的幾個小知識點
- 關於C++ scanf的一個小知識C++
- 關於網校系統開發的小知識
- 關於蘋果企業開發者賬號的小知識蘋果
- 關於前端應該知道的5個小知識前端
- 關於處理死鎖的一點小知識
- 關於MySQL索引知識與小妙招 — 學到了!MySql索引
- 關於散裝和盒裝CPU小知識
- Python中關於Thread的一點小知識Pythonthread
- 陳皓:關於閏秒(leap second)的小知識
- 關於高水位的知識
- 關於LLC知識1
- 關於知識付費的思考
- 關於序列化的知識
- 關於Python Number 相關的知識!Python
- 關於Java的小知識集合之 ArrayList可變長陣列Java陣列
- 儲存_硬碟_小知識_轉硬碟
- Linux使用小知識(轉)Linux
- java知識:關於String和StringBuffer(轉)Java
- 有關Es6知識的小結
- 面試小知識:MySQL索引相關面試MySql索引
- SEO關於探討URL的知識!
- 關於機器學習需要了解的知識機器學習
- 關於索引必須知道的知識索引
- 關於range的一個知識點
- 關於TortoiseSVN的一些知識
- 關於專案管理的知識點專案管理
- React相關知識點:關於ReduxReactRedux
- UNICODE、DBCS的一點小知識 (轉)Unicode
- [TCP]轉TCP相關知識TCP
- 決策樹相關知識小結
- 關於Java兩點需要更新的知識Java
- 關於 CSS 的零碎知識點CSS
- 關於mysql基礎知識的介紹MySql