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]+",");

            }

    }

    }

  • 相关阅读:
    如何在Eclipse中彻底修改一个项目名称
    用JS在html页面实现打印功能
    关于git提交、还原使用
    maven package:Max maven Unsupported major.minor version 51.0
    Tomcat 启动报错:javax.naming.NamingException: No naming context bound to this class loader
    maven web 项目中启动报错java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener
    tripwire检查文件完整性
    设置mysql表名不区分大小写
    mysql-零基础安装
    nginx-0基础安装篇
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3397983.html
Copyright © 2011-2022 走看看