util.go 源码阅读

import (
    "crypto/md5"
    "encoding/hex"
    "encoding/json"
    "fmt"
    "hash/crc32"
    "hash/fnv"
    "strconv"
)

//string to hash
IEEE 
func MakeHash(s string) string {
    const IEEE = 0xedb88320
    var IEEETable = crc32.MakeTable(IEEE) //创建IEEE table
    hash := fmt.Sprintf("%x", crc32.Checksum([]byte(s), IEEETable))
    return hash
}
//字符串转化为hash值
func HashString(encode string) uint64 {
    hash := fnv.New64()
    hash.Write([]byte(encode))
    return hash.Sum64()
}

// 制作特征值方法一
func MakeUnique(obj interface{}) string {
    baseString, _ := json.Marshal(obj)
    return strconv.FormatUint(HashString(string(baseString)), 10)
}

// 制作特征值方法二
func MakeMd5(obj interface{}, length int) string {
    if length > 32 {
        length = 32
    }
    h := md5.New()
    baseString, _ := json.Marshal(obj)
    h.Write([]byte(baseString))
    s := hex.EncodeToString(h.Sum(nil))//转化为16进制字符串
    return s[:length]
}

转载于:https://www.cnblogs.com/zhangboyu/p/7462042.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值