天天看點

3DES加密封包 (使用DESede/ECB/PKCS5Padding組合模式補位)

遇到一個接口請求要 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);                                                    //輸出看看
	}
           

具體就這些,簡單的用法