为了账号安全,请及时绑定邮箱和手机立即绑定

golang的原生字符串哈希函数是完美的吗?

golang的原生字符串哈希函数是完美的吗?

Go
温温酱 2022-10-04 19:40:33
我在golang的源代码中发现了这个函数,并想知道它是否真的是一个完美的哈希函数。这是测试的正确方法吗?package mainimport (    "fmt"    "strconv"    "unsafe")//go:linkname strhash runtime.strhashfunc strhash(p unsafe.Pointer, h uintptr) uintptrconst seed = 666func main() {    m := make(map[uintptr]string)    for i := 0; i < 1000000000; i++ {        key := strconv.Itoa(i)        hash := strhash(unsafe.Pointer(&key), seed)        _, exist := m[hash]        if exist {            fmt.Println("collision")            break        }        m[hash] = key    }    fmt.Println("finish")}
查看完整描述

1 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

据我所知,事实并非如此。它使用 AES 指令来创建哈希。您可能想查看类似 https://github.com/cespare/mph 的东西。


查看完整回答
反对 回复 2022-10-04
  • 1 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号