亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 294 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號