Encryption Bouncycastle加密私钥PEM输出:RSA私钥vs私钥

Encryption Bouncycastle加密私钥PEM输出:RSA私钥vs私钥,encryption,cryptography,bouncycastle,pkcs#8,pkcs#1,Encryption,Cryptography,Bouncycastle,Pkcs#8,Pkcs#1,我在使用Java Bouncycastle的客户端和使用Python RSA库的密钥服务器之间交换私钥时遇到困难。PEM格式用于通过REST传输密钥。 密钥服务器无法解密我提供的密钥(加密密码更改时需要),它需要一个带有PEM的PKCS#1或PKCS#8密钥,如下所示: -----BEGIN PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,ACCB65DDEB20F5AB EcU3fekuLeUc0viPJ20vAG

我在使用Java Bouncycastle的客户端和使用Python RSA库的密钥服务器之间交换私钥时遇到困难。PEM格式用于通过REST传输密钥。 密钥服务器无法解密我提供的密钥(加密密码更改时需要),它需要一个带有PEM的PKCS#1或PKCS#8密钥,如下所示:

-----BEGIN PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,ACCB65DDEB20F5AB

EcU3fekuLeUc0viPJ20vAG+Jg1Igkvm+JTjnLmMBE6SwDS/hkf3KP0bFto7Pv6fJ
但是bouncycastle的输出,使用JcePEMEncryptorBuilder和JcaMiscPEMGenerator,有一个稍微不同的开始字符串:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,ACCB65DDEB20F5AB

EcU3fekuLeUc0viPJ20vAG+Jg1Igkvm+JTjnLmMBE6SwDS/hkf3KP0bFto7Pv6fJ
在我做一些研究时,我了解到PEM启动BEGIN RSA私钥表示该密钥是使用PKCS#1编码的

当我尝试使用JceOpenSSLPKCS8EncryptorBuilder和JcaPKCS8Generator获取PKCS#8加密输出时,我得到一个PEM,如下所示:

-----BEGIN ENCRYPTED PRIVATE KEY-----
MIICrjAoBgoqhkiG9w0BDAEDMBoEFP+MLFFaKGC6J/37jF7wRgL3coZdAgIIAASC
AoAdWVo4kAQ1S0stQZbzca7wL876nzlKfcOa4BKsCttPnFVPugJOvGDnATgUK5P/
所以我的问题是:有没有办法让bouncycastle以BEGIN私钥的形式输出一个带有加密私钥的PEM,或者python库期望的格式是错误的

其次,我无法掌握bouncycastle在JCepementCryptorBuilder中使用的是PKCS#1还是PKCS#8。它使用PrivateKeyInfo#getEncoded,但文档中不清楚PKCS格式


Bouncycastle版本:bcpkix-jdk15on 1.52

结果是Python库没有正确处理所有标准格式,因此我们使用另一个支持Bouncycastle发送的格式的Python库修复了它

我要说的是,Python库不希望PKCS#1格式的RSA密钥具有正确的头。如果您从BC中删除“RSA”,服务器会接受它吗?实际上我尝试了,但没有成功;)