go 计算文件sha-256_Go 操作哈希函数

go 计算文件sha-256_Go 操作哈希函数_第1张图片

整理了一下Go操作SHA256的三种方式

package main

import (
	"crypto/sha256"
	"fmt"
	"io"
	"os"
)

func main() {
      

	//方式一
	var date1 []byte = []byte("adfkfjsadsijfal")
	var hs = sha256.Sum256(date1)
	fmt.Printf("%Xn", hs)

	//方式二
	h := sha256.New()
	h.Write([]byte("adfkfjsadsijfal"))
	fmt.Printf("%Xn", h.Sum(nil))

	//方式三 从文件读取
	ha := sha256.New()
	f, err := os.Open("hash.test")
	if err != nil {
      
		fmt.Println("error1!")
	}
	defer f.Close()
	if _, err := io.Copy(ha, f); err != nil {
      
		fmt.Println("error2")
	}
	fmt.Printf("%X", ha.Sum(nil))

}

运行,输出结果

haGOROOT=C:Go #gosetup
GOPATH=E:Project #gosetup
C:Gobingo.exe build -o E:Projectbingo_build_main_go.exe E:Projectsrchelloworldmain.go #gosetup
E:Projectbingo_build_main_go.exe #gosetup
EE8B82DFA94B7102BFE83BA3666300168D791143D29C92BFC841582231306ABE
EE8B82DFA94B7102BFE83BA3666300168D791143D29C92BFC841582231306ABE
EE8B82DFA94B7102BFE83BA3666300168D791143D29C92BFC841582231306ABE
Process finished with exit code 0

hash.test 文件中的字符串为adfkfjsadsijfal ,与代码中变量一样,所以输出哈希值都是一样的。

你可能感兴趣的:(go,计算文件sha-256)