1 Star 1 Fork 1

up-zero/gotool

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
md5.go 1.14 KB
一键复制 编辑 原始数据 按行查看 历史
zhaopan 提交于 2023-08-07 10:55 +08:00 . feat file
package gotool
import (
"crypto/md5"
"fmt"
"io"
"os"
)
// Md5 获取md5值
//
// elem: string, []byte
// salt: 加盐
func Md5(elem any, salt ...string) (string, error) {
switch elem.(type) {
case string:
data := elem.(string)
for _, v := range salt {
data += v
}
return fmt.Sprintf("%x", md5.Sum([]byte(data))), nil
case []byte:
data := elem.([]byte)
for _, v := range salt {
data = append(data, []byte(v)...)
}
return fmt.Sprintf("%x", md5.Sum(data)), nil
default:
return "", ErrNotSupportType
}
}
// Md5Iterations 迭代多次求md5
//
// elem: string, []byte
// iterations: 迭代次数
func Md5Iterations(s any, iterations int) (string, error) {
var err error
for i := 0; i < iterations; i++ {
s, err = Md5(s)
if err != nil {
return "", err
}
}
return s.(string), nil
}
// Md5File 获取文件的MD5
//
// path 文件路径
func Md5File(path string) (string, error) {
src, err := os.Open(path)
if err != nil {
return "", err
}
defer src.Close()
md5Hash := md5.New()
_, err = io.Copy(md5Hash, src)
if err != nil {
return "", err
}
mdByte := md5Hash.Sum(nil)
return fmt.Sprintf("%x", mdByte), nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/up-zero/gotool.git
git@gitee.com:up-zero/gotool.git
up-zero
gotool
gotool
main

搜索帮助