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

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

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

C#
繁星coding 2021-11-08 15:55:08
我希望能够根据调用者输入在哈希算法之间切换,例如,实现一个函数:func GenericHash(dat []byte, hash unint) (string, error) { ... }其中 hash 是由crypto.Hash指定的算法类型。我不确定如何编写这个函数,特别是 import 语句应该放在哪里。如果我在顶部包含我将在顶部使用的算法的所有导入语句,则 go 会抱怨它们已导入但未使用。反正有按需进口吗?
查看完整描述

1 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

您需要做的是仅为它们的副作用导入包(即在导入包时使用空白标识符)。这意味着导入包的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

}


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 259 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信