package com.hh.common.encrypt;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;
public class ThreeDesUtil {
// 3DES加密解密 非对称加密算法 加密key 解密key 不相同
//key 根据实际情况对应的修改
private static final String key="123456789123456789123456"; //密钥
private static final String ALGORITHM = "DESede"; //加密算法,可用 DES,DESede,Blowfish
private static final String TRANSFORMATION = "DESede/CBC/PKCS5Padding"; //模式
//加密-Base64(des(data,key))
public static String encryptCBCBase64(String data,String key){
try {
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);
DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
byte[] doFinal = cipher.doFinal(data.getBytes("UTF-8"));
return Base64Util.encode(doFinal);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//解密decry-base64-des
public static String decryptCBCBase64(String data,String key){
try {
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);
DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));
cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);
byte[] decode = Base64Util.decode(data);
byte[] retByte = cipher.doFinal(decode);
return new String(retByte);
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
}