Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Bouncy Castle的非对称密码密钥对(RSA)转换为java.security.KeyPair_Java_Encryption_Bouncycastle_Jce - Fatal编程技术网

将Bouncy Castle的非对称密码密钥对(RSA)转换为java.security.KeyPair

将Bouncy Castle的非对称密码密钥对(RSA)转换为java.security.KeyPair,java,encryption,bouncycastle,jce,Java,Encryption,Bouncycastle,Jce,我正在尝试为我们的E2E测试自动生成CA和证书。我从Bouncy Castle开始,我已经成功地生成了CA证书和机器证书。但是,现在我需要将由BC'org.bounchycastle.crypto.asymmetricipherkeypair表示的RSA密钥对转换为java.security.keypair。我似乎找不到这样做的方法。可能有不止一种方法,但这里有一个例子: import org.bouncycastle.crypto.AsymmetricCipherKeyPair; import

我正在尝试为我们的E2E测试自动生成CA和证书。我从Bouncy Castle开始,我已经成功地生成了CA证书和机器证书。但是,现在我需要将由BC'org.bounchycastle.crypto.asymmetricipherkeypair表示的RSA密钥对转换为java.security.keypair。我似乎找不到这样做的方法。

可能有不止一种方法,但这里有一个例子:

import org.bouncycastle.crypto.AsymmetricCipherKeyPair;
import org.bouncycastle.crypto.util.PrivateKeyInfoFactory;
import org.bouncycastle.crypto.util.SubjectPublicKeyInfoFactory;

import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;


private static KeyPair convertBcToJceKeyPair(AsymmetricCipherKeyPair bcKeyPair) throws Exception {
    byte[] pkcs8Encoded = PrivateKeyInfoFactory.createPrivateKeyInfo(bcKeyPair.getPrivate()).getEncoded();
    PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(pkcs8Encoded);
    byte[] spkiEncoded = SubjectPublicKeyInfoFactory.createSubjectPublicKeyInfo(bcKeyPair.getPublic()).getEncoded();
    X509EncodedKeySpec spkiKeySpec = new X509EncodedKeySpec(spkiEncoded);
    KeyFactory keyFac = KeyFactory.getInstance("RSA");
    return new KeyPair(keyFac.generatePublic(spkiKeySpec), keyFac.generatePrivate(pkcs8KeySpec));
}