Files
encryptx/md5x/md5x.go
T

41 lines
639 B
Go
Raw Normal View History

2023-12-27 19:00:14 +08:00
package md5x
import (
"crypto/md5"
"encoding/hex"
"io"
"os"
)
// 字符串的md5
func Md5String(value string) string {
2024-03-15 22:19:09 +08:00
return Md5Byte([]byte(value))
}
func Md5Byte(b []byte) string {
2023-12-27 19:00:14 +08:00
m := md5.New()
2024-03-15 22:19:09 +08:00
m.Write(b)
2023-12-27 19:00:14 +08:00
return hex.EncodeToString(m.Sum(nil))
}
// 文件的md5
func Md5File(path string) (string, error) {
file, err := os.Open(path)
if err != nil {
return "", err
}
defer file.Close()
2024-03-15 13:49:58 +08:00
return Md5Stream(file)
}
// 流式的md5
func Md5Stream(reader io.Reader) (string, error) {
2023-12-27 19:00:14 +08:00
hash := md5.New()
2024-03-15 13:49:58 +08:00
_, err := io.Copy(hash, reader)
if err != nil {
return "", err
}
2023-12-27 19:00:14 +08:00
return hex.EncodeToString(hash.Sum(nil)), nil
}