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





