溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中加密解密與數(shù)字證書的操作有哪些

發(fā)布時間:2021-12-16 17:38:01 來源:億速云 閱讀:227 作者:小新 欄目:大數(shù)據(jù)

小編給大家分享一下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è)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI