java加密解密與數字證書的操作
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]+",");
}
}
}
關注獲取視訊
相關推薦
java加密解密與數字證書的操作
1 Java程式實現金鑰庫的維護 1.1 Java程式列出金鑰庫所有條目 import java.util.*; import java.io.*; import java.security.*; public class ShowAlias{
JAVA加密解密之數字證書
系統之間在進行互動的時候,我們經常會用到數字證書,數字證書可以幫我們驗證身份等,下面我們就來看一下在java中如何使用數字證書。 我們先使用keytool工具生成金鑰庫並匯出公鑰證書。 第一步:生成keyStroe檔案 執行如下命令: keyto
Java加解密與數字簽名
對稱 數組 aes 生成密鑰 分解 encode rup 特性 ntc Java加解密與數字簽名 2016-08-30 蕊蕊 java編程 ** Java加解密 ** 實現方式:JDK實現,CC,B
Java加密解密之數字簽名
上一篇帖子,我們講了MAC(訊息認證碼),它可以驗證身份和防篡改。 它的機制是通過通訊雙方都持有相同的祕鑰去實現,祕鑰相同摘要才相同,沒有祕鑰就不能生成正確的摘要資訊。 但是,它有個缺點,就是通訊雙方必須持有相同的祕鑰,解決方法就是使用數字簽名 數字簽名(又稱公鑰數字簽名、
基於密鑰庫和數字證書的加密解密和簽名驗證操作
return 產生 初始 www. 數字證書 ray get put 庫文件 package com.szzs; import java.io.FileInputStream; import java.security.KeyStore; import java.sec
RSA加密解密及數字簽名Java實現
cto 包括 sign object misc 數據 factory 了解 對稱密鑰 RSA公鑰加密算法是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。當時他們三人都在
Java 實現 RSA加密解密及數字簽名
RSA公鑰加密演算法是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。當時他們三人都在麻省理工學院工作。RSA就是他們三人姓氏開頭字母拼在一起組成的。 RSA是目
password學4——Java 加密解密之消息摘要算法(MD5 SHA MAC)
加密解密 hash函數 -s -m hmac 可能 正向 技術發展 哈希算法 Java 加密解密之消息摘要算法(MD5 SHA MAC) 消息摘要 消息摘要(Message Digest)又稱為數字摘要(Digital Digest)。它是一個唯一相
java加密解密
子郵件 openssl sock 天數 file 驗證 word genrsa https 一:1.KeyManagerFactory類(密鑰管理工廠,用來管理密鑰): 構建密鑰庫管理工廠與下例一樣: System.setProperty("javax.net.ssl.k
java加密解密技術(3)對稱加密AES
import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; imp
iOS開發 RSA加密解密與後臺之間的雙向加密詳解
序言 因為專案中需要用到RSA加密,剛開始也是有點亂,這兩天也整理的差不多了,希望能幫到大家。 這次先上程式碼,我想大部分人肯定是著急解決問題,所以不要廢話太多。 iOS端 後臺是PHP,給我了一段公鑰和他用私鑰加密後的base64編碼,讓我先解一下,看看能否解出(請先不要糾結為什麼給我公鑰解密,公鑰私鑰都
JAVA加密解密之凱撒加密(Caesar cipher)演算法
凱撒加密演算法簡介 凱撒加密(Caesar cipher)是一種簡單的訊息編碼方式:它根據字母表將訊息中的每個字母移動常量位k。舉個例子如果k等於3,則在編碼後的訊息中,每個字母都會向前移動3位:a會被替換為d;b會被替換成e;依此類推。字母表末尾將回捲到字母
Java 加密解密工具類AESUtil
package test; /* @auther wjh @date 2018-08-01*/ import java.security.SecureRandom; import javax.crypto.Cipher; import javax.cry
Java加密解密之對稱加密
採用單鑰密碼系統的加密方法,同一個金鑰可以同時用作資訊的加密和解密,這種加密方法稱為對稱加密,也稱為單金鑰加密。 其核心思想是,加密和解密都是同一個祕鑰 對稱加密常用的演算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJAC
Java 加密解密工具
package com.panda.core.db.util; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import
Java加密解密之MAC(訊息認證碼)
上一篇帖子,我們講了訊息摘要(數字摘要),它是把一個文字/檔案 通過摘要函式(hash函式)計算出一個結果。然後把文字/檔案和摘要結果一同發給接受者 接受者接收到檔案之後,也進行摘要,把兩個摘要結果進行對比。如果一致就說明文字/檔案和摘要是一致的 但是,這裡有個問題,假設A
Java加密解密全解
1 sha加密: 安全雜湊演算法(Secure Hash Algorithm)主要適用於數字簽名標準(Digital Signature Standard DSS)裡面定義的數字簽名演算法(Digital Signature Algorithm DSA)。對於長度小於2^6
Java加密解密之非對稱加密
非對稱加密演算法需要兩個金鑰來進行加密和解密,這兩個祕鑰是公開金鑰(public key,簡稱公鑰)和私有金鑰(private key,簡稱私鑰)。使用公鑰加密的,要使用私鑰解密。反之,使用私鑰加密的,要使用公鑰解密。 和對稱加密的區別是: 對稱加密:加密和解密時使用的是
java加密解密和簽名的問題
注意:加密:先用公鑰加密再用私鑰解密 解密:先用私鑰解密再用公鑰解密 因為公鑰加密長度<127 私鑰》127 關於簽名: debug--除錯 release--釋出--正式簽名--android.keystore 應用升級:包名相同 簽名
java加密解密研究6、MD演算法家族
一、簡述 MD5演算法是典型的訊息摘要演算法,其前身有MD2、MD3和MD4演算法,它由MD4、MD3和MD2演算法改進而來。不論是哪一種MD演算法,它們都需要獲得一個隨機長度的資訊併產生一個123位的資訊摘要。如果將這個128位的二進位制摘要資訊換算成十六進位制,可以得到