zoukankan      html  css  js  c++  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]+",");

            }

    }

    }

  • 相关阅读:
    [Leetcode] Symmetric tree 对称二叉树
    [Leetcode] Populating next right pointer in each node ii 填充每个节点的右指针
    [Leetcode] Populating next right pointer in each node 填充每个节点的右指针
    [Leetcode] Same tree判断是否为相同树
    [Leetcode] Path Sum II路径和
    [Leetcode] Path Sum路径和
    [Leetcode] Binary tree maximum path sum求二叉树最大路径和
    [Leetcode] The minimum depth of binary tree二叉树的最小深度
    设计模式-工厂方法模式
    设计模式-简单工厂模式
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3397983.html
Copyright © 2011-2022 走看看