Encryption &引用;“块中没有DEK Info头”;尝试读取加密私钥时

Encryption &引用;“块中没有DEK Info头”;尝试读取加密私钥时,encryption,go,openssl,cryptography,Encryption,Go,Openssl,Cryptography,我正在尝试读取加密的PKCS8私钥文件。我生成的密钥如下所示: openssl genrsa -out file.pem -passout pass:file -aes256 1024 openssl pkcs8 -topk8 -inform pem -in file.pem -outform pem -out filePKCS8.pem 我试着这样读: block, _ := pem.Decode(key) return x509.DecryptPEMBlock(block, passwor

我正在尝试读取加密的PKCS8私钥文件。我生成的密钥如下所示:

openssl genrsa -out file.pem -passout pass:file -aes256 1024
openssl pkcs8 -topk8 -inform pem -in file.pem -outform pem -out filePKCS8.pem
我试着这样读:

block, _ := pem.Decode(key)
return x509.DecryptPEMBlock(block, password)
但我得到一个错误,说:

x509: no DEK-Info header in block
然而,我不知道出了什么问题。我是生成了错误的密钥还是使用了错误的库?我看到的库专门用于读取未加密的PKCS8文件,但没有专门用于加密的PKCS8文件的库


有人知道吗?

Go在标准库中没有解密PKCS8密钥的功能

您可以使用此软件包:

对任何有相同问题的人的较长解释

什么能起作用 你的第一个命令

openssl genrsa -out file.pem -passout pass:file -aes256 1024
生成PKCS#1私钥文件(file.pem):

这个私钥文件可以由用户解析和解密

什么不起作用?为什么 你的第二个命令

openssl pkcs8 -topk8 -inform pem -in file.pem -outform pem -out filePKCS8.pem
将该文件转换为PKCS#8格式(filePKCS8.pem)

子命令
genpkey
将直接产生类似的结果:

openssl genpkey -algorithm RSA -aes256 \
  -pkeyopt rsa_keygen_bits:1024 -out filePKCS8.pem
生成的文件pkcs8.pem(无论哪种方式)看起来都类似于以下内容:

-----BEGIN ENCRYPTED PRIVATE KEY-----
MIISrTBXBgkqhkiG9w0BBQ0wSjKpBgkqhkiG9w0BBQwwHAQIKL+ordsVfqsCAggB
MAwGCCqGSIb3DQIJCQAwHQYJYIZIWAUDBAEqBBCipOAAxWkC0/zkNLNYTSMgBIIS
...
...
zfdxjZ0XmPiwED2azsLMnRrWnRj2UqMtnv9zO/ucik9za
-----END ENCRYPTED PRIVATE KEY-----
不支持此格式。如中所述,Go的核心库在不久的将来没有支持pkcs#8的真正计划


正如所提到的,如果您想使用它,那么使用第三方库(如())会更好。

如何加载
密码
?不支持查看该源代码。它似乎只有在AES-256-CBC模式下加密时才能处理。但是,openssl默认为pbeWITHMD5ndDES CBC。看来这个图书馆处理不了这个问题。我错了吗?
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIISrTBXBgkqhkiG9w0BBQ0wSjKpBgkqhkiG9w0BBQwwHAQIKL+ordsVfqsCAggB
MAwGCCqGSIb3DQIJCQAwHQYJYIZIWAUDBAEqBBCipOAAxWkC0/zkNLNYTSMgBIIS
...
...
zfdxjZ0XmPiwED2azsLMnRrWnRj2UqMtnv9zO/ucik9za
-----END ENCRYPTED PRIVATE KEY-----