java加密解密与数字证书的操作

纵然是瞬间 提交于 2019-11-27 17:25:35

1 Java程序实现密钥库的维护
1.1 Java程序列出密钥库所有条目
import java.util.*;  
import java.io.*;  
import java.security.*;  
public class ShowAlias{  
    public static void main(String args[ ]) throws Exception{  
        String pass="080302";  
        String name=".keystore";  
        FileInputStream in=new FileInputStream(name);  
        KeyStore ks=KeyStore.getInstance("JKS");             
        ks.load(in,pass.toCharArray());  
        Enumeratione=ks.aliases( );  
        while( e.hasMoreElements()) {  
            System.out.println(e.nextElement());  
        }  
    }  
}    
1.2 Java程序修改密钥库口令
import java.io.*;  
import java.security.*;  
public class SetStorePass{  
    public static void main(String args[ ]) throws Exception{  
        char[ ] oldpass="080302".toCharArray();  
        char[ ] newpass="123456".toCharArray();  
        String name=".keystore";  
        FileInputStream in=new FileInputStream(name);  
        KeyStore ks=KeyStore.getInstance("JKS");  
        ks.load(in,oldpass);  
        in.close();  
        FileOutputStream output=new FileOutputStream(name);  
        ks.store(output,newpass);  
        output.close();   
    }  
}    
1.3 Java程序修改密钥库条目的口令及添加条目
package test;  
import java.io.*;  
import java.security.*;  
import java.security.cert.Certificate;  
public class SetKeyPass{  
   public static void main(String args[ ]) throws Exception{    
        //读取相关参数    
        String name=".keystore";    
        String alias="mykey";    
        char[ ] storepass="123456".toCharArray();    
        char[ ] oldkeypass="080302".toCharArray();   
        char[ ] newkeypass="123456".toCharArray();    
        //获取密钥库.keystore的KeyStore对象,并加载密钥库    
        FileInputStream in=new FileInputStream(name);   
        KeyStore ks=KeyStore.getInstance("JKS");   
        ks.load(in,storepass);    
        //获取别名对应的条目的证书链   
        Certificate[ ] cchain=ks.getCertificateChain(alias);   
        //读取别名对应的条目的私钥    
        PrivateKey pk=(PrivateKey)ks.getKey(alias,oldkeypass);    
        //向密钥库中添加新的条目    
        ks.setKeyEntry(alias,pk,newkeypass,cchain);    
        in.close();    
        //将KeyStore对象内容写入新文件   
        FileOutputStream output=new FileOutputStream("333");    
        ks.store(output,storepass);    
        output.close();    
    }    
}  
1.4 Java程序检验别名及删除条目
package test;  
import java.io.*;  
import java.security.*;  
public class DeleteAlias{  
    public static void main(String args[ ]) throws Exception{  
        String pass = "123456";  
        String name = ".keystore";  
        String alias = "mykey";  
        FileInputStream in=new FileInputStream(name);  
        KeyStore ks=KeyStore.getInstance("JKS");             
        ks.load(in,pass.toCharArray());  
        if (ks.containsAlias(alias)){  
            ks.deleteEntry(alias);  
            FileOutputStream output=new FileOutputStream(name);   
            ks.store(output,pass.toCharArray());   
            System.out.println("Alias "+alias+" deleted");   
        }else{   
            System.out.println("Alias not exist");   
        }   
    }  
}    
2 Java程序读取证书和显示证书指定信息
2.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.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( ));   
    }  
}    
2.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]+",");   
        }    
}  
}  

关注获取视频  spring springboot  springcloud  redis dubbo

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!