首页 > 后端开发 > Golang > 正文

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

Barbara Streisand
发布: 2024-10-31 10:51:29
原创
491 人浏览过

How to Decrypt Encrypted PKCS8 Private Keys in Go: Solving the

解决加密 PKCS8 私钥的“块中没有 DEK-Info 标头”错误

尝试使用以下命令解码加密的 PKCS8 私钥时去吧,你可能会遇到“块中没有 DEK-Info header”的错误。这表明密钥解码功能无法处理加密的 PKCS8 私钥。

使用提供的 OpenSSL 命令生成密钥似乎是正确的。然而,Go 的标准库本身并不支持解密加密的 PKCS8 私钥。

解决方案:

要解决此问题,您可以使用专门为处理而设计的外部库PKCS8密钥解密。此类库的一个示例是“pkcs8”库,可在 GitHub 上获取。

假设您有以下使用“pkcs8”库解密 PKCS8 密钥的代码:

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

func DecryptPKCS8(key []byte, password string) (*pkcs8.PrivateKey, error) {
    block, _ := pem.Decode(key)
    return pkcs8.Decrypt(block.Bytes, []byte(password))
}</code>
登录后复制

该函数将字节片形式的加密 PKCS8 密钥和解密密码作为参数。然后,它尝试解码包含加密密钥数据的 PEM 块。

如果解码成功,该函数将调用“pkcs8”库中的 Decrypt 函数来执行实际解密。然后,解密的密钥以 *pkcs8.PrivateKey 结构体的形式返回。

通过合并此库并使用 DecryptPKCS8 函数处理加密的 PKCS8 密钥,您可以解决“块中没有 DEK-Info 标头”错误。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!