读取公钥可以使用JAVA本身的类即可。
读取私钥可以使用http://www.bouncycastle.org提供的类。
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.InvalidKeyException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.PrivateKey;
import java.security.SignatureException;
import java.security.UnrecoverableKeyException;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
public class KeyReader {
public static void main(String[] args) throws KeyStoreException,
NoSuchProviderException, NoSuchAlgorithmException,
CertificateException, IOException, UnrecoverableKeyException,
InvalidKeyException, SignatureException {
// Open an input stream on the keystore file
String cerFileName = "d:/certA.cer";
String p12FileName = "d:/certA.p12";
String pfxPassword = "openssl";
InputStream fis = new FileInputStream(p12FileName);
// Create a keystore object
KeyStore keyStore = KeyStore.getInstance("PKCS12", "BC");
// Load the file into the keystore
keyStore.load(fis, pfxPassword.toCharArray());
String aliaesName = "abcd";
PrivateKey priKey = (PrivateKey) (keyStore.getKey(aliaesName, null));
System.out.println("private key:\n" + priKey);
// public key
InputStream is = new FileInputStream(cerFileName);
CertificateFactory cf = CertificateFactory.getInstance("x509");
Certificate cerCert = cf.generateCertificate(is);
System.out.println("public key:\n" + cerCert);
}
}