因為 GO 語言的強大,md5 和 SHA-256 的校驗都存在自帶的標準庫中了,可以使用非常簡短的代碼來實現(xiàn)它。
字符串 md5 和 SHA-256 的校驗
func GetMd5FromString(data string) string {
h := md5.New()
io.WriteString(h, data)
sum := fmt.Sprintf("%x", h.Sum(nil))
return sum
}
func GetSHA256FromString(data string) string {
h := sha256.New()
io.WriteString(h, data)
sum := fmt.Sprintf("%x", data)
return sum
}
文件的 md5 和 SAH-256 的校驗
func GetMd5FromFile(path string) (string, error) {
f, err := os.Open(path)
defer f.Close()
if err != nil {
return "", err
}
h := md5.New()
if _, err := io.Copy(h, f); err != nil {
return "", err
}
return fmt.Sprintf("%x", h.Sum(nil)), nil
}
func GetSHA256FromFile(path string) (string, error) {
f, err := os.Open(path)
defer f.Close()
if err != nil {
return "", err
}
h := sha256.New()
if _, err := io.Copy(h, f); err != nil {
return "", err
}
sum := fmt.Sprintf("%x", h.Sum(nil))
return sum, nil
}