遇到一個接口請求要 RSA MD5 3Des Base64進行聯合加密的.....
尼瑪這保密要求好高啊....
3DES是一種對稱加密方式,就是用同一密鑰進行加密和解密
需要準備什麼
1.是以需要一個通信雙方都知道的密鑰(24個位元組)
單des密鑰是8位元組,三重des密鑰就是3*8=24位元組。
2.一段明文...
public void test_3des() throws Exception {
byte[] keybyte = "abcdefghizklmnopqrstuvwx".getBytes("utf-8"); //密鑰,24位 下面需要位元組數組,記住utf-8
SecretKey deskey = new SecretKeySpec(keybyte, "DESede"); //用到javax下的SecreKey,傳入密鑰和加密方式
byte[] input ="這裡是一段需要加密明文資料".getBytes("UTF-8"); //需要位元組數組類型 utf-8
Cipher c1 = Cipher.getInstance("DESede/ECB/PKCS5Padding"); //emmm....獲得一個Cipher執行個體
c1.init(Cipher.ENCRYPT_MODE, deskey); //加載這個加密算法
byte[] str1 = c1.doFinal(input); //執行,獲得位元組數組(密文)
// ------------------------------------------------------ //下面是解密
SecretKey deskey2 = new SecretKeySpec(keybyte, "DESede");
Cipher c2 = Cipher.getInstance("DESede");
c2.init(Cipher.DECRYPT_MODE, deskey2); //加載解密算法
byte[] str2 = c2.doFinal(str1); //獲得解密後的資料
String string = new String(str2, "utf-8");
System.out.println(bytes2Hex(str2) + " 16進制解密後" + string); //輸出看看
}
具體就這些,簡單的用法