示意圖如下,輸入內容若不同,得到的校驗碼也一定會不同。注意,圖中的校驗碼是隨便給的。
當需要傳輸檔案時,特別是很大的檔案,提供端可先算出校驗碼,通常是SHA-1或MD5,與檔案一起放在網站上,接收端收到檔案後,再使用相同的校驗碼函數算出校驗碼,比較後若相同,就代表檔案內容無誤,沒有在傳輸過程中受損,沒有被竄改。各種P2P檔案分享協定,如BitTorrent,也會運用校驗碼來檢查。
校驗碼演算法(函數)非常多,常見的有CRC32、MD5、SHA-1、SHA-256、SHA-512,底下介紹幾支能計算檔案校驗碼的軟體與指令。
HashMyFiles
支援:MD5、SHA-1、CRC32、SHA-256、SHA-512、SHA-384
平台:Windows(免費)
官方網站:NirSoft HashMyFiles
用法非常簡單,開啟後把檔案拖拉到視窗內,如此即可。另外,因為計算大型檔案時需要花費不少時間,可到選單「Options-Hash Types」,取消勾選不需要的校驗碼。
HashTab
支援:MD5、SHA1、SHA2、RipeMD、HAVAL、Whirlpool等等
平台:Windows(免費)與Mac OS X(付費購買)
官方網站:Implbits HashTab
與作業系統操作介面整合,在檔案上點案滑鼠右鍵、選「內容」,在「檔案校驗」分頁裡便是校驗碼,按下「設定」後可選取想要的校驗碼。
若是Linux平台,包括Cygwin,可使用指令sha1sum、md5sum來算出SHA1和MD5校驗碼。
$ sha1sum xyz.zip
1907023be83da53ac0f1d2e5e310ec15acc6cdfb *xyz.zip
$ md5sum xyz.zip
6eebcc746e9159d14d239f4b8b09b6d3 *xyz.zip
若是Mac OS X,可使用指令openssl,加上參數sha1與md5來算出SHA1和MD5校驗碼。
$ openssl sha1 abc.zip
SHA1(abc.zip)= 64310b1750081cd65fa3ff92aa59701a9205fdc6
$ openssl md5 abc.zip
MD5(abc.zip)= 9e22f2a99809b8d11006834d2c17de01
Thanks for sharing! It is really useful!
ReplyDelete