首页  >  文章  >  后端开发  >  如何在 Go 中解密加密的 PKCS8 密钥:“块中没有 DEK-Info 标头”错误解决方案?

如何在 Go 中解密加密的 PKCS8 密钥:“块中没有 DEK-Info 标头”错误解决方案?

Barbara Streisand
Barbara Streisand原创
2024-11-02 07:56:29985浏览

How to Decrypt Encrypted PKCS8 Keys in Go:

Go:“No DEK-Info header in block”解密加密的 PKCS8 密钥时出错

尝试解密加密的 PKCS8 私钥时在 Go 中,您可能会遇到一条错误消息,指出“x509:块中没有 DEK-Info 标头”。此错误表明提供的块不包含必要的 DEK-Info 标头,而 DEK-Info 标头对于解密密钥至关重要。

问题在于标准 Go 库没有提供用于解密的本机函数加密的 PKCS8 密钥。为了解决这个问题,您可以利用第三方库或自定义代码。

这里有一个可以处理加密 PKCS8 文件的合适库:https://github.com/youmark/pkcs8/blob/master/pkcs8。 go#L103

通过将 pkcs8 包合并到您的代码中,您可以使用以下代码片段成功解密加密的 PKCS8 私钥:

<code class="go">import "github.com/youmark/pkcs8"

func DecryptPKCS8Key(key []byte, password string) ([]byte, error) {
    block, _ := pem.Decode(key)
    return pkcs8.Decrypt(block.Bytes, []byte(password))
}</code>

此代码片段使用来自pkcs8 包用于解密加密的 PKCS8 密钥。第一个参数是编码后的密钥数据,第二个参数是用于加密密钥的密码。

以上是如何在 Go 中解密加密的 PKCS8 密钥:“块中没有 DEK-Info 标头”错误解决方案?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn