Files
Go-http_framework/util/HashModUtil.go
T

47 lines
798 B
Go

//通过hash算法获取字符串对应的哈希值
package util
import (
"bytes"
"hash/crc32"
"math/big"
)
func bigInt(s string) (*big.Int, bool) {
bInt := new(big.Int)
return bInt.SetString(s, 10)
}
func UseBigIntMod(s string, mod int) int64 {
b, br := bigInt(s)
if !br {
panic("该方法只可用于大数mod计算")
}
result := b.Mod(b, new(big.Int).SetInt64(int64(mod)))
return result.Int64()
}
func calBytesSum(s string) int {
var sum int
for _, b1 := range bytes.NewBufferString(s).Bytes() {
sum = sum + int(b1)
}
return sum
}
func Mod(s string, mod int) int {
sum := calBytesSum(s)
return sum % mod
}
func crc32Change(s string) uint32 {
return crc32.ChecksumIEEE([]byte(s))
}
func Crc32Mode(s string, mod int) int {
u := crc32Change(s)
return int(u) % mod
}