Files
kubesphere/pkg/utils/hashutil/hashutil.go
2025-04-30 15:53:51 +08:00

48 lines
906 B
Go

/*
* Copyright 2024 the KubeSphere Authors.
* Please refer to the LICENSE file in the root directory of the project.
* https://github.com/kubesphere/kubesphere/blob/master/LICENSE
*/
package hashutil
import (
"encoding/hex"
"hash/fnv"
"io"
"code.cloudfoundry.org/bytefmt"
"k8s.io/klog/v2"
"kubesphere.io/kubesphere/pkg/utils/readerutils"
)
func GetMD5(reader io.ReadCloser) (string, error) {
md5reader := readerutils.NewMD5Reader(reader)
data := make([]byte, bytefmt.KILOBYTE)
for {
_, err := md5reader.Read(data)
if err != nil {
if err == io.EOF {
break
}
klog.Error(err)
return "", err
}
}
err := reader.Close()
if err != nil {
return "", err
}
return hex.EncodeToString(md5reader.MD5()), nil
}
func FNVString(text []byte) string {
h := fnv.New64a()
if _, err := h.Write(text); err != nil {
klog.Error(err)
}
return hex.EncodeToString(h.Sum(nil))
}