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

如何在 Go 中解密加密的 PKCS8 私钥并修复“块中没有 DEK-Info 标头”错误?

Linda Hamilton
Linda Hamilton原创
2024-11-01 09:36:02234浏览

How to Decrypt Encrypted PKCS8 Private Keys in Go and Fix the

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

尝试读取加密的 PKCS8 Go 中的私钥,你可能会遇到错误“x509: no DEK-Info header in block.”此错误是由 Go 标准库内的固有限制引起的,该库缺乏解密加密 PKCS8 密钥的功能。

解决问题

确保您不会生成密钥不正确,请验证您的 OpenSSL 命令是否如下:

  1. 生成私钥:

    openssl genrsa -out file.pem -passout pass:file -aes256 1024
  2. 转换为 PKCS8 格式:

    openssl pkcs8 -topk8 -inform pem -in file.pem -outform pem -out filePKCS8.pem

替代解决方案

虽然 Go 标准库不提供对解密加密 PKCS8 密钥的直接支持,但您可以使用外部包例如:

  • github.com/youmark/pkcs8

此包提供了专门设计用于解密加密 PKCS8 密钥的函数:

func DecryptPrivateKey(block *pem.Block, password []byte) (priv interface{}, err error)

通过使用此包,您可以克服Go标准库的限制,成功解密加密的PKCS8私钥。

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

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