竹简文档

加密哈希

SHA-256 和 MD5 哈希计算

加密哈希

xUtil.Encryption() 提供 SHA-256 和 MD5 哈希计算函数。

import xUtil "github.com/xiaolfeng/bamboo-base-go/common/utility"

入口函数

utility.go
func Encryption() *pack.Encryption

SHA-256 哈希

SHA256

计算字符串的 SHA-256 哈希:

package/encryption.go
func (e *Encryption) SHA256(data string) string

返回: 64 位小写十六进制字符串。

hash := xUtil.Encryption().SHA256("password123")
// "ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f"

SHA256Bytes

计算字节切片的 SHA-256 哈希:

package/encryption.go
func (e *Encryption) SHA256Bytes(data []byte) string
data := []byte("password123")
hash := xUtil.Encryption().SHA256Bytes(data)

MD5 哈希

MD5

计算字符串的 MD5 哈希:

package/encryption.go
func (e *Encryption) MD5(str string) string

返回: 32 位小写十六进制字符串。

xUtil.Encryption().MD5("password123")
// "482c811da5d5b4bc632efdea819417a"

MD5Bytes

计算字节切片的 MD5 哈希:

package/encryption.go
func (e *Encryption) MD5Bytes(data []byte) string
data := []byte("password123")
hash := xUtil.Encryption().MD5Bytes(data)

使用场景

文件完整性校验

service/file.go
func (s *FileService) CheckIntegrity(filePath string) (bool, error) {
    data, err := os.ReadFile(filePath)
    if err != nil {
        return false, err
    }

    // 计算文件 SHA-256
    actual := xUtil.Encryption().SHA256Bytes(data)

    // 从数据库获取预期的哈希值...
    expected := "ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f"
    return actual == expected, nil
}

密码存储(不推荐)

// [!code warning]
// 警告:MD5 不适合用于密码存储,请使用 xUtil.Password() 进行密码加密
hash := xUtil.Encryption().MD5("password123")  // 仅用于演示

安全说明

算法输出长度用途安全性
SHA-25664 字符数据签名、文件校验
MD532 字符非安全场景的快速校验低(易碰撞)

重要: MD5 不适合用于密码存储或安全签名,请使用 xUtil.Password() 进行密码加密。

下一步

On this page