使用golang编码计算sha256加密,运行时报错panic: crypto: requested hash function #5 is unavailable
先贴一下源码:
package main
import (
"crypto"
"encoding/hex"
"fmt"
)
func main() {
s := "Transfer(address,address,uint256)"
m := crypto.SHA256.New()
m.Write([]byte(s))
v := hex.EncodeToString(m.Sum(nil))
fmt.Println(v)
return
}
在stackoverflow上找到相同的问题,其实是需要主动注册sha256加密算法。
哈希函数必须通过导入import _ "whatever"
。这些文件不会自动链接到二进制文件中,所以编译不会报错,运行时就报错了。
解决办法就是主动import “crypto/sha256”
package main
import (
"crypto"
_ "crypto/sha256"
"encoding/hex"
"fmt"
)
func main() {
s := "Transfer(address,address,uint256)"
m := crypto.SHA256.New()
m.Write([]byte(s))
v := hex.EncodeToString(m.Sum(nil))
fmt.Println(v)
return
}
参考:
openpgp-in-go-error-crypto-requested-hash-function-is-unavailable