您好,登錄后才能下訂單哦!
小編給大家分享一下java中加密解密與數(shù)字證書的操作有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
1 Java程序實現(xiàn)密鑰庫的維護
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{ //讀取相關參數(shù) 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對象內(nèi)容寫入新文件 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("簽發(fā)者全名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中加密解密與數(shù)字證書的操作有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。