我正在编写Java代码以生成密钥并将其保存在文件中,我正在使用BouncyCastle库使用pemwriter(如果在PKCS#1中)将私钥写入.pem文件,并使用常规的FileOutputStream导出它进入PKCS#8。现在,当导出到DER时,尝试在PKCS#1中导出它时就会出现问题。我进行了大量搜索,但找不到合适的方法来在PKCS#1中对私钥进行编码或将Java私钥(PKCS#8)的常规编码转换为PKCS#1,或者是否可以引导我将PrivateKey转换为或RSAPrivateKey或DSAPrivateKey。这是我要导出的代码的一小段 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();其中privateKeyBytes是ECPrivateKey的返回字节,它们在PKCS#8中,如果我可以将PrivateKey转换为RSAPrivateKey或DSAPrivateKey,它们表示PrivateKey.getEncoded().格式的私钥 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 显然,您可以使用类型信息并执行类转换 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; } (adsbygoogle = window.adsbygoogle || []).push({});
07-24 09:23