解决加密 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中文网其他相关文章!