Bouncycastle encrypted private key PEM output: RSA PRIVATE K



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

-----BEGIN PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,ACCB65DDEB20F5AB
EcU3fekuLeUc0viPJ20vAG+Jg1Igkvm+JTjnLmMBE6SwDS/hkf3KP0bFto7Pv6fJ

但是bouncycastle的输出,使用JcePEMEncryptorBuilder和JcaMiscPEMGenerator有一个稍微不同的BEGIN字符串:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,ACCB65DDEB20F5AB
EcU3fekuLeUc0viPJ20vAG+Jg1Igkvm+JTjnLmMBE6SwDS/hkf3KP0bFto7Pv6fJ

我做了一些研究,我了解到以BEGIN RSA PRIVATE KEY开头的PEM表示密钥是使用pkcs# 1编码的。

当我尝试使用JceOpenSSLPKCS8EncryptorBuilder和JcaPKCS8Generator获得pkcs# 8加密输出时,我得到如下PEM:

-----BEGIN ENCRYPTED PRIVATE KEY-----
MIICrjAoBgoqhkiG9w0BDAEDMBoEFP+MLFFaKGC6J/37jF7wRgL3coZdAgIIAASC
AoAdWVo4kAQ1S0stQZbzca7wL876nzlKfcOa4BKsCttPnFVPugJOvGDnATgUK5P/

所以我的问题是:是否有一种方法可以让bouncycastle以BEGIN private key的形式输出带有加密私钥的PEM,或者python库期望错误的格式?

接下来,我无法掌握是否在JcePEMEncryptorBuilder中使用pkcs# 1或pkcs# 8。它使用PrivateKeyInfo#getEncoded,但文档不清楚PKCS格式。

Bouncycastle版本:bcpkix-jdk15on 1.52

事实证明Python库不能正确处理所有标准格式,所以我们通过使用另一个支持Bouncycastle发送格式的Python库来修复它。

最新更新