crypto: requested hash function #5 is unavailable

使用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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容