使用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
使用golang编码计算sha256加密,运行时报错panic: crypto: requested hash function #5 is unavailable先贴一下源码:package mainimport ( "crypto" "encoding/hex" "fmt")func main() { s := "Transfer(address,address,uint256)" m := crypto.SHA256.New() m.Write([]byte(s)) v :
0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:71:19) at Object.createHash (node:crypto:133:10)如何修改这个bug
这个错误提示是因为你的代码中使用了不支持的数字信封例程,具体错误在创建哈希时抛出,建议按照以下步骤修改该错误:
1. 查看你的代码中哪些部分使用了数字信封例程,例如加密、解密、签名、验证等等。
2. 确认你的代码是基于哪个版本的 Node.js 运行的,如果你使用了较老的版本,可能需要升级到更高版本以支持数字信封例程。
3. 如果你确定使用的 Node.js 版本已支持相应的数字信封例程,那么可以尝试升级你使用的加解密库,也可以查看该加解密库的文档,看看是否有关于该错误的解决方案。
4. 重新运行程序,看看是否还会出现该错误,如果还是出现该错误,请参考错误提示信息中的行数和列数,检查相应位置的代码是否存在问题,例如参数传递错误、变量未定义等等。
如果以上方法都无法解决该错误,请考虑寻求更高水平的技术支持。
CSDN-Ada助手:
去除stackoverflow页面上关不掉的cookie弹窗
Scarlett2025:
gethostbyname的用法以及阻塞问题
Aplionm:
去除stackoverflow页面上关不掉的cookie弹窗
csdnpika:
OpenHarmony鸿蒙Wifi AP业务流程分析
鸿蒙一只杨: