这两天公司项目需要用到数字证书,把N年前的代码找回来贴上
package com.jinhill.pki;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.security.NoSuchProviderException;
import java.security.Security;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
public class CertUtil {
public CertUtil(){
//Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
}
public static String getSubjectDN(byte[] der) {
String dn = "";
try {
ByteArrayInputStream bIn = new ByteArrayInputStream(der);
//BouncyCastleProvider provider = new BouncyCastleProvider();
//CertificateFactory cf = CertificateFactory.getInstance("X509",
//provider);
//CertificateFactory cf = CertificateFactory.getInstance("X.509",
// "SUN");
//android 需采用bcprov
CertificateFactory cf = CertificateFactory.getInstance("X.509",
"BC");
X509Certificate cert = (X509Certificate) cf
.generateCertificate(bIn);
dn = cert.getSubjectDN().getName();
bIn.close();
} catch (CertificateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (NoSuchProviderException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return dn;
}
public static String parseCertDN(String dn, String type){
type = type + "=";
String[] split = dn.split(",");
for (String x : split) {
if (x.contains(type)) {
x = x.trim();
return x.substring(type.length());
}
}
return null;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}