当前位置:编程学习 > JAVA >>

Java对证书的操作

1 Java程序从证书文件读取证书
import java.io.*;
 
import java.security.cert.*;
 
public class PrintCert{
 
public static void main(String args[ ]) throws Exception{
 
        CertificateFactory cf=CertificateFactory.getInstance("X.509");
 
        FileInputStream in=new FileInputStream("my.cer");
 
        Certificate c=cf.generateCertificate(in);
 
        in.close();
 
        String s=c.toString( );
 
        // 显示证书
 
  FileOutputStream fout=new FileOutputStream("tmp.txt");
 
         BufferedWriter out= new BufferedWriter(new OutputStreamWriter(fout));
 
        out.write(s,0,s.length( )); 
 
        out.close();   
 
}
 
}  
 
2 Java程序从密钥库直接读取证书
 
 
import java.io.*;
 
import java.security.*;
 
import java.security.cert.Certificate;
 
public class PrintCert2{
 
    public static void main(String args[ ]) throws Exception{
 
          String pass="080302";
 
          String alias="mykey";
 
          String name=".keystore";
 
          FileInputStream in=new FileInputStream(name);
 
          KeyStore ks=KeyStore.getInstance("JKS");           
 
          ks.load(in,pass.toCharArray());
 
          Certificate c=ks.getCertificate(alias);
 
          in.close();
 
         System.out.println(c.toString( ));
 
    }
 
}  
 
 
 
3 Java程序显示证书指定信息(全名/公钥/签名等)
import java.io.*;
 
import java.security.*;
 
import java.security.cert.*;
 
import java.math.*;
 
public class ShowCertInfo{
 
   public static void main(String args[ ]) throws Exception{
 
        CertificateFactory cf=CertificateFactory.getInstance("X.509");
 
        FileInputStream in=new FileInputStream("my.cer");
 
        java.security.cert.Certificate c=cf.generateCertificate(in);
 
        in.close();
 
        X509Certificate t=(X509Certificate) c;
 
        System.out.println("版本号 "+t.getVersion());
 
        System.out.println("序列号 "+t.getSerialNumber().toString(16));
 
        System.out.println("全名 "+t.getSubjectDN());
 
        System.out.println("签发者全名n"+t.getIssuerDN());
 
        System.out.println("有效期起始日 "+t.getNotBefore());
 
        System.out.println("有效期截至日 "+t.getNotAfter());
 
        System.out.println("签名算法 "+t.getSigAlgName());
 
        byte[] sig=t.getSignature();
 
        System.out.println("签名n"+new BigInteger(sig).toString(16));
 
        PublicKey pk=t.getPublicKey();
 
        byte[ ] pkenc=pk.getEncoded();
 
        System.out.println("公钥");
 
        for(int i=0;i< div=""> 
 
        System.out.print(pkenc[i]+",");
 
        }
 
}
 
}
补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,