這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
用GO校正下載檔案之SHA256
原來對電腦和網路使用安全這塊不夠重視,用了N多年盜版的作業系統和辦公軟體,為了破解使用過各種啟用軟體,也安裝使用過很多別人破解過的軟體;網路下載的檔案從不校正。慢慢地,自己越來越謹慎,現在只使用正版的Windows作業系統,或者開源的Linux作業系統,開源的辦公軟體。。。,總之一句話,來路不明的軟體盡量不用,或者在虛擬機器上使用。從各種官方網路下載的檔案,如果提供了校正碼,一定要對檔案進行校正。
從現在開始,從go開始,用go實現sha256來校正golang官方下載的go安裝檔案。go的crypto包提供了很多安全相關的演算法,實現檔案sha256校正是非常簡單的,下面直接上代碼。
package mainimport ("crypto/sha256""fmt""io""log""os")func main() {if len(os.Args) != 2 {fmt.Printf("Usage: %s filename\n", os.Args[0])}h := sha256.New()f, err := os.OpenFile(os.Args[1], os.O_RDONLY, 0666)if err != nil {log.Fatal(err)}defer f.Close()buf := make([]byte, 1<<20)for {n, err := io.ReadFull(f, buf)if err == nil || err == io.ErrUnexpectedEOF {_, err = h.Write(buf[0:n])if err != nil {log.Fatal(err)}} else if err == io.EOF {break} else {log.Fatal(err)}}rslt := h.Sum(nil)fmt.Printf("%x\n", rslt)}
go build 產生 sha256.exe
從golang官方下載最新windows 安裝包 go1.9.1.windows-386.msi 校正碼 c939b62e32ba3048321546a111c732868b66fe1b58ae9c12b723a02a6a02b27c
下載安裝包後,執行
D:\mygo\src\sha256>sha256.exe go1.9.1.windows-386.msi
c939b62e32ba3048321546a111c732868b66fe1b58ae9c12b723a02a6a02b27c
然後sha256.exe的輸出和官方提供的校正比對
通過Beyond Compair比較工具比較發現,下載的檔案是正確的。
通過這樣一小段代碼,可以體驗到go語言的強大,用go實現各種校正都很容易。(校正只是安全的一小步,如果受到中間人攻擊,頁面文字和連結都被篡改,校正成功也可能是染毒或染馬的檔案)