java封装Des3Utils类实现CBC加密、解密

该代码段展示了一个名为Des3Utils的Java类,它包含两个静态方法,分别用于DES3加密(des3EncodeCBC)和解密(decrypt)。加密过程使用了CBC模式和PKCS5Padding填充,同时需要密钥(key)和初始向量(iv)作为输入。解密方法接收已加密的Base64编码内容,以及密钥和向量来还原原始字符串。

java封装Des3Utils类实现CBC加密,解密
高度封装的Des3Utils,当参数为String类型时使用,调用des3EncodeCBC进行加密,decrypt方法进行解密.
参数说明:key为加密,解密的密钥,iv为初始向量(长度不小于8的字符串)

public class Des3Utils {
	//加密
	public static String des3EncodeCBC(String key, String iv, String str) {

		final Base64.Encoder encoder = Base64.getEncoder();
		try {
				byte[] keyBytes = key.getBytes("utf-8");
				byte[] ivBytes = iv.getBytes("utf-8");
				byte[] sBytes = str.getBytes("utf-8");
			 	SecretKey deskey = new SecretKeySpec(keyBytes, "DESede"); // 加密
	            Cipher c1 = Cipher.getInstance("DESede/CBC/PKCS5Padding");
	            IvParameterSpec IVSpec = new IvParameterSpec(ivBytes);
	            c1.init(Cipher.ENCRYPT_MODE, deskey, IVSpec);
	            byte[] bs = c1.doFinal(sBytes);
	            return encoder.encodeToString(bs);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
	//解密
	public static String decrypt(String base64Content, String slatKey, String vectorKey) {
		try {
		Cipher cipher= Cipher.getInstance("DESede/CBC/PKCS5Padding");

		SecretKey secretKey= new SecretKeySpec(slatKey.getBytes(), "DESede");

		IvParameterSpec iv= new IvParameterSpec(vectorKey.getBytes());

		cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);
		byte[] content =Base64.getDecoder().decode(base64Content);
		byte[] encrypted =cipher.doFinal(content);
		return new String(encrypted);
		
		}catch (Exception e) {
			e.printStackTrace();
			return null;
		}
		
		}
}	
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值