• 用Go校验下载文件之SHA256


        用GO校验下载文件之SHA256

        原来对计算机和网络使用安全这块不够重视,用了N多年盗版的操作系统和办公软件,为了破解使用过各种激活软件,也安装使用过很多别人破解过的软件;网络下载的文件从不校验。慢慢地,自己越来越谨慎,现在只使用正版的Windows操作系统,或者开源的Linux操作系统,开源的办公软件。。。,总之一句话,来路不明的软件尽量不用,或者在虚拟机上使用。从各种官方网络下载的文件,如果提供了校验码,一定要对文件进行校验。

        从现在开始,从go开始,用go实现sha256来校验golang官方下载的go安装文件。go的crypto包提供了很多安全相关的算法,实现文件sha256校验是非常简单的,下面直接上代码。

    package main
    
    import (
    	"crypto/sha256"
    	"fmt"
    	"io"
    	"log"
    	"os"
    )
    
    func main() {
    
    	if len(os.Args) != 2 {
    		fmt.Printf("Usage: %s filename
    ", 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
    ", rslt)
    
    }
    

      go build 生成 sha256.exe

        从golang官方下载最新windows 安装包 go1.9.1.windows-386.msi   校验码 c939b62e32ba3048321546a111c732868b66fe1b58ae9c12b723a02a6a02b27c

    下载安装包后,执行

    D:mygosrcsha256>sha256.exe go1.9.1.windows-386.msi
    c939b62e32ba3048321546a111c732868b66fe1b58ae9c12b723a02a6a02b27c

    然后sha256.exe的输出和官方提供的校验比对

    通过Beyond Compair比较工具比较发现,下载的文件是正确的。

    通过这样一小段代码,可以体验到go语言的强大,用go实现各种校验都很容易。(校验只是安全的一小步,如果受到中间人攻击,页面文字和链接都被篡改,校验成功也可能是染毒或染马的文件)

  • 相关阅读:
    PHP深度学习参考地址
    随手记两个链接,关于自适应屏幕显示的
    数据库查询,指定查询结果某列为固定值
    $('#id").load
    【转】Caused by: android.os.NetworkOnMainThreadException错误解决办法
    @Autowired注入DAO对象为NULL
    1-sqoop
    1-kylin架构
    1-kudu架构原理读写流程
    2、apache druid界面说明
  • 原文地址:https://www.cnblogs.com/majianguo/p/7658102.html
Copyright © 2020-2023  润新知