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);                                                    //输出看看
	}

具体就这些,简单的用法



你可能感兴趣的:(瞎写)