Sunday Jun 23, 2024

如何使用win10、win11跟Linux 指令直接運算出md5、sha256等雜湊值

如果有檔案經過不斷的複製與傳輸之後,為了確保資料的完整性,通常我都會利用md5sha256等演算法去確認資料是否傳輸完整,尤其像很多提供iso檔的網站也通常都會提供md5或sha256以確保下載檔案的完整,甚至跟你說要輸入什麼指令做驗證(如下圖),而演算法的演進是一開始先有md5演算法,但在後來發現md5有一些弱點且陸續被破解,所以才出現sha家族,而現在常用的sha256屬於sha-2的一部分,這部份要說明會很多,以後有機會再做,這裡不在詳述下去。

Ubuntu官網提供sha256的驗證碼 擷取自ubuntu官網

而在linux中,我習慣使用sha256summd5sum等方式來做驗證碼的比對,

mds5sum <檔案名稱1> <檔案名稱2> ….

sha256sum <檔案名稱1> <檔案名稱2> ……

如下圖,我要對一個下載的win10_21h2_64bit的檔案做sha256,我就會輸入

使用sha256sum指令算出驗證碼

結果就會導出sha256驗證碼+檔案名稱,之後要知道檔案是否有傳送完整就可以使用比對sha256驗證碼,md5也是一樣的操作方式,如果要驗證2個檔案就在sha256sum後面接2個檔案名稱並用空白鍵分開,也可以使用正則表示法算出多的檔案的驗證碼,如果要讀出把某個檔案或路徑的檔案驗證碼並直接輸入到檔案紀錄中,可以使用“>”(大於)輸入,如下

md5sum (檔案名稱1) (檔案名稱2) > (紀錄md5驗證碼的路徑檔案)

sha256sum (檔案名稱1) (檔案名稱2) > (紀錄sha256驗證碼的路徑檔案)

完成之後以後我就可以使用“-c”來做檔案是否被竄改或更改或損壞的確認,指令如下

mds5sum -c (紀錄md5驗證碼的路徑檔案)

sha256sum -c (紀錄sha256驗證碼的路徑檔案)

這樣會導出如下結果,其中因為我有檔案已經刪除跟驗證碼文件跟所有檔案放在一起,所以會出現一些錯誤,但可以忽略。

驗證的結果輸出

而跟linux相比,在wn8.1之前都是必須要安裝第三方程式才能使用md5或sha256演算法做檔案驗證,但在win8.1開始,windows也可以在不安裝任何第三方程式下算出驗證碼,

第一個方法是在cmd模式中使用certutil指令,cmd模式的進入方式可以按住windows符號按鈕+R,在輸入Enter,就會跳出cmd視窗,或者點桌面左下放大鏡輸入cmd在按下Enter也可以,然後輸入指令

certutil -hashfile (檔案名稱) (驗算法類型ex:sha256 or md5)

這樣就會出如下結果,

使用windows指令算出驗證碼

這樣就可以算出驗證碼,而第二個方法就是啟用subsystem ubuntu然後在用linux的使用方式算出驗證碼,至於那個方法比較好用就看個人的習慣跟需要,像我之前剛開始使用軟raid時就會常常使用md5sum指令排程定期來驗證檔案是否有不正常錯誤或遺失,也可以檢查重要資料有無遭到竄改或是否中加密病毒等等,相當方便,如果還有其他應用或更方便的方式也歡迎大家留言交流喔^^

謝謝分享
Ron

Ron

喜歡固定但多變的生活模式,喜歡思考跟分享生活點滴,歡迎隨時找我聊聊喔!!關於作者

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Back to Top