golang 产生文件的cksum值
例子产生文件的cksum串,SHA1,SHA256,以及MD5,其他的也类似
package main
import (
"fmt"
"io"
"log"
"os"
"encoding/hex"
"crypto/md5"
"crypto/sha1"
"crypto/sha256"
)
func main() {
hash_file_md5("file.txt")
hash_file_shaX("file.txt")
}
func hash_file_shaX(filePath string) error {
f, err := os.Open(filePath)
if err != nil {
log.Fatal(err)
}
defer f.Close()
// sha1
h1 := sha1.New()
if _, err := io.Copy(h1, f); err != nil {
log.Fatal(err)
}
// sha256
h256 := sha256.New()
if _, err := io.Copy(h256, f); err != nil {
log.Fatal(err)
}
fmt.Printf("SHA256 SUM=[%v]\n", fmt.Sprintf("%x", h1.Sum(nil)))
fmt.Printf("SHA256 SUM=[%v]\n", fmt.Sprintf("%x", h256.Sum(nil)))
return nil
}
func hash_file_md5(filePath string) error {
file, err := os.Open(filePath)
if err != nil {
return err
}
defer file.Close()
hash := md5.New()
if _, err := io.Copy(hash, file); err != nil {
return err
}
//Get the 16 bytes hash
hashInBytes := hash.Sum(nil)[:16]
fmt.Printf("MD5 SUM=[%v]\n", hex.EncodeToString(hashInBytes))
return nil
}
有疑问加站长微信联系(非本文作者)