Files
encryptx/hash.go
T
2026-09-30 15:49:12 +08:00

50 lines
1.3 KiB
Go

package encryptx
import (
"fmt"
"code.yun.ink/pkg/encryptx/blake2x"
"code.yun.ink/pkg/encryptx/md5x"
"code.yun.ink/pkg/encryptx/ripemd160x"
"code.yun.ink/pkg/encryptx/sha1x"
"code.yun.ink/pkg/encryptx/sha256x"
"code.yun.ink/pkg/encryptx/sha3x"
"code.yun.ink/pkg/encryptx/sha512x"
)
// hashHex 计算哈希并返回小写十六进制字符串。
//
// 各哈希包都提供统一签名的 Hex([]byte) string,因此这里只是一张映射表;
// 带位数后缀的包(sha256x / sha512x / sha3x / blake2x)按具体变体取函数。
func hashHex(encryptType EncryptType, data []byte) (string, error) {
switch encryptType {
case MD5:
return md5x.Hex(data), nil
case SHA1:
return sha1x.Hex(data), nil
case SHA224:
return sha256x.Hex224(data), nil
case SHA256:
return sha256x.Hex256(data), nil
case SHA384:
return sha512x.Hex384(data), nil
case SHA512:
return sha512x.Hex512(data), nil
case SHA3_224:
return sha3x.Hex224(data), nil
case SHA3_256:
return sha3x.Hex256(data), nil
case SHA3_384:
return sha3x.Hex384(data), nil
case SHA3_512:
return sha3x.Hex512(data), nil
case BLAKE2B_256:
return blake2x.Hex256B(data), nil
case BLAKE2S_256:
return blake2x.Hex256S(data), nil
case RIPEMD160:
return ripemd160x.Hex(data), nil
}
return "", fmt.Errorf("%w: %s 不是哈希算法", ErrUnsupportedType, encryptType)
}