關鍵指令
# mac
$ shasum -a 256 <FilePath># linux
$ sha256sum <FilePath># windows
$ certUtil -hashfile <FilePath> SHA256
使用情境
在使用上傳下載檔案時,不管是透過軟體 anydesk
/ teamviewer
或瀏覽器下載,或是使用指令 curl
/ wget
下載完檔案,往往只能透過試著打開檔案來檢查檔案是否正常,在不同作業上檔案大小是不一定相同的。但是對於安裝檔/壓縮檔這類型的檔案,往往不是這麼適合直接打開來看看功能是否正常,這是就需要使用 hash
函數來幫我們校驗。
產生檔案
使用 echo
來製造實驗檔案方便觀察。
# 產生一個文件檔 test
$ echo 'abc' > test.txt
$ ls -lh
-rw-r--r-- 1 root root 4 Dec 1 13:44 test.txt
$ sha256sum test.txt
edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb test.txt
對照組
接著在不同時間產生另外一個相同內文的檔案。
# 產生一個文件檔 test2
$ echo 'abc' > test2.txt
$ ls -lh
-rw-r--r-- 1 root root 4 Dec 1 13:44 test.txt
-rw-r--r-- 1 root root 4 Dec 1 13:48 test2.txt
$ sha256sum test2.txt
edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb test2.txt
顯然檔案不會因為檔案名稱跟製造時間不同而改變 hash
值,這在不同作業系統也有相同結果。
相關演算法
這類雜湊函式 Hash function
其實不只有一種,常見的有 MD5
/ SHA-1
也是有相同的功用。