将.der文件中的私钥导出为PKCS#1

时间:2013-12-08 09:17:09

标签: java bouncycastle pkcs#8 pkcs#1

我正在编写一个java代码来生成密钥并将它们保存在文件中,我正在使用BouncyCastle库将私钥写入.pem文件,使用pemwriter(如果它在PKCS#1中)并使用常规FileOutputStream将其导出到PKCS#8。

现在当导出到DER时,尝试在PKCS#1中导出它时会出现问题。

我搜索了很多,但找不到合适的方法来编码PKCS#1中的私钥,或者将java私钥的常规编码(PKCS#8)转换为PKCS#1,或者如果你可以指导我转换{{ 1}}到PrivateKeyRSAPrivateKeyDSAPrivateKey。以下是我要导出的代码片段

ECPrivateKey

其中privateKeyBytes是它们在PKCS#8中的 JcePEMEncryptorBuilder builder = new JcePEMEncryptorBuilder("DES-EDE3-CBC"); PEMEncryptor enc = builder.build(password); FileOutputStream fis = new FileOutputStream(new File(privatekey.der)); if (isPKCS8) { if (!encrypt) { fis.write(privateKeyBytes); } else { fis.write(enc.encrypt(privateKeyBytes)); } fis.flush(); fis.close(); 的返回字节,如果我可以将PrivateKey转换为RSAPrivateKey或DSAPrivateKey,则它们代表PrivateKey.getEncoded().格式的私钥

1 个答案:

答案 0 :(得分:0)

显然你可以使用类型信息并执行类投射

   PrivateKey privKey = ...;
   if (privKey instance of RSAPrivateKey) {
       RSAPrivateKey rsaPrivKey = (RSAPrivateKey)privKey;
   if (privKey instance of DSAPrivateKey) {
       DSAPrivateKey dsaPrivKey = (DSAPrivateKey)privKey;
   if (privKey instance of ECPrivateKey) {
       ECPrivateKey ecPrivKey = (ECPrivateKey)privKey;
   }