У меня есть .p12-файл, и я хочу экспортировать открытый и закрытый ключи. Я использовал этот метод:Экспорт PublicKey и PrivateKey из файла PKCS12
FileInputStream fm = new FileInputStream("C:\\cert.p12");
KeyStore ks = KeyStore.getInstance("PKCS12");
try {
ks.load(fm, "pass".toCharArray());
} catch (Exception e) {
e.printStackTrace();
}
Key key = ks.getKey("cert", "pass".toCharArray());
Certificate cert = ks.getCertificate("cert");
PublicKey publicKey = cert.getPublicKey();
System.out.println("Public key");
System.out.println(Base64.getEncoder().encodeToString(
publicKey.getEncoded()));
fm.close();
Второй способ заключается в использовании команды OpenSSL и преобразовать его в файл .CER:
openssl pkcs12 -in cert.p12 -out cert.cer -nodes
Третий метод должен был загрузить этот cert.cer файл KeyStore и получить Ключ
FileInputStream fm1;
fm1 = new FileInputStream("C:\\cert.cer");
CertificateFactory f = CertificateFactory.getInstance("X.509");
X509Certificate certificate = (X509Certificate)f.generateCertificate(fm1);
PublicKey pk = certificate.getPublicKey();
System.out.println("Public key");
System.out.println(Base64.getEncoder().encodeToString(pk.getEncoded()));
Так что мой вопрос в том, почему первый открытый ключ такой же, как в третьем методе, но отличается от второго метода. Как я могу экспортировать этот ключ?
Второй пример экспортирует сертификат, а не ключ. – EJP