0

PFXファイルから秘密鍵を読み取ることはできますが、公開鍵を読み取ることはできません。次のコードを使用して公開鍵を読み取ります。

InputStream inStream = new FileInputStream(certFile); 
CertificateFactory cf = CertificateFactory.getInstance("X.509"); 
BufferedInputStream bis = new BufferedInputStream(inStream);
// if (bis.available() > 0) {
java.security.cert.Certificate cert = cf.generateCertificate(bis);
System.out.println("This part is not getting printed in case of PFX file");
// }
puk = (PublicKey) cert.getPublicKey();

このコードは、.cerファイルから読み取ったときに正しく機能しています。助けてください

4

3 に答える 3

4

クラスを使用してKeyStore、ファイルをPKCS#12KeyStoreとして扱います。KeyStore.getInstance("PKCS12")PKCS12キーストアのインスタンスを取得するために使用します。

KeyStoreのJavadocには、サンプルコードが含まれています。

于 2010-12-22T11:51:54.723 に答える
0

Security.addProvider(new BouncyCastleProvider()); KeyStore keyStore = KeyStore.getInstance("JKS"); keyStore.load(new FileInputStream("G:\certificate\pkcs7\src\main\resources\certificates\UTKS0000001_1092020T20308.pfx"),"12345678".toCharArray()); KEY_ALIAS_IN_KEYSTORE=keyStore.aliases().nextElement(); Certificate[] certchain = (Certificate[]) keystore.getCertificateChain(KEY_ALIAS_IN_KEYSTORE);

    final List<Certificate> certlist = new ArrayList<Certificate>();

    for (int i = 0, length = certchain == null ? 0 : certchain.length; i < length; i++) {
        certlist.add(certchain[i]);
    }

    Store certstore = new JcaCertStore(certlist);

    Certificate cert = keystore.getCertificate(KEY_ALIAS_IN_KEYSTORE);
    publicKey = cert.getPublicKey();
    System.out.println("*************************"+publicKey);
于 2021-01-03T12:32:47.937 に答える