gpt4 book ai didi

hash - golang中如何动态切换哈希算法?

转载 作者:IT王子 更新时间:2023-10-29 01:36:23 24 4
gpt4 key购买 nike

我希望能够根据调用者的输入在哈希算法之间切换,例如,实现一个函数:

func GenericHash(dat []byte, hash unint) (string, error) { ... }

其中哈希是由 crypto.Hash 指定的算法类型.

我不确定如何编写此函数,尤其是导入语句应该放在哪里。如果我在顶部包含我将使用的算法的所有导入语句,go 会提示它们已导入但未使用。反正有按需导入吗?

最佳答案

你需要做的是import the packages for their side effects only (即在导入包时使用空白标识符)。这意味着将执行导入包的 init 函数,但您将无法直接访问它们的任何导出成员。

这是解决问题的一种方法:

import (
"errors"
"encoding/hex"
"crypto"
_ "crypto/md5"
_ "crypto/sha1"
// import more hash packages
)

func GenericHash(dat []byte, hash crypto.Hash) (string, error) {
if !hash.Available() {
return "", errors.New("hash unavailable")
}
h := hash.New()
return hex.EncodeToString(h.Sum(dat)), nil
}

关于hash - golang中如何动态切换哈希算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32620290/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com