qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          java數(shù)字證書解析

           這兩天公司項目需要用到數(shù)字證書,把N年前的代碼找回來貼上

          package com.jinhill.util;

          import java.io.*;
          import java.security.*;
          import java.security.cert.CertificateException;
          import java.security.cert.CertificateFactory;
          import java.security.cert.X509Certificate;
          import java.util.Properties;

          public class Test {

           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");
             X509Certificate cert = (X509Certificate) cf
               .generateCertificate(bIn);
             dn = cert.getSubjectDN().getName();
             bIn.close();
            } catch (CertificateException e) {
             e.printStackTrace();
            } catch (NoSuchProviderException e) {
             e.printStackTrace();
            } catch (IOException e) {
             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) {
            try {
             FileInputStream fis = new FileInputStream(
               "D:/Work/RootCA/newcerts/Reader01.cer");
             int flen = fis.available();
             byte[] buf = new byte[flen];
             fis.read(buf, 0, flen);
             String dn = getSubjectDN(buf);
             String cn = parseCertDN(dn, "CN");
             System.out.println(cn);
            } catch (Exception ex) {
             System.out.println("讀證書文件出錯!");
            }
           }

          }

          posted on 2013-08-20 14:12 順其自然EVO 閱讀(689) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2013年8月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 静海县| 兴义市| 镇沅| 潼南县| 岳阳市| 清水河县| 当雄县| 罗山县| 大厂| 铜山县| 宜章县| 通海县| 娱乐| 辉南县| 肥乡县| 汝阳县| 合肥市| 南丰县| 托克托县| 辉南县| 叶城县| 冕宁县| 淮南市| 大兴区| 汕头市| 辉南县| 富宁县| 瓦房店市| 门源| 上杭县| 叙永县| 孙吴县| 固始县| 宜君县| 河津市| 广丰县| 丹江口市| 宜宾市| 都江堰市| 土默特左旗| 双柏县|