使用java从证书中读取私钥

读取公钥可以使用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);
	}
}

你可能感兴趣的:(java,Security)