代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。