/**
* AES算法,解密
*
* @param data 待解密字符串
* @param key 解密私钥,长度不能够小于16位
* @return 解密后的字节数组
* @throws Exception 异常
*/
public static String decode(String key,String data) {
if(data == null)
return null;
try {
// 向量IV
String IV = xxx //自己定制
// 加密结果
String result =<span style="font-family: Arial, Helvetica, sans-serif;">data</span> //根据自己需求得到
result = result.replace("!", "+").replace(",", "/").replace("]", "=").replace("@", "%"); //自身需求制定加密解密规则
byte[] raw = key.getBytes();
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
IvParameterSpec iv = new IvParameterSpec(IV.getBytes());
AlgorithmParameterSpec paramSpec = iv;
cipher.init(Cipher.DECRYPT_MODE, skeySpec, paramSpec);
byte[] encrypted1 = new BASE64Decoder().decodeBuffer(result);// 先用base64解码
byte[] original = cipher.doFinal(encrypted1);
return new String(original);
} catch (Exception e){
e.printStackTrace();
return null;
}
}
/**
* DES算法,加密
*
* @param data 待加密字符串
* @param key 加密私钥,长度不能够小于16位
* @return 加密后的字节数组,一般结合Base64编码使用
* @throws InvalidAlgorithmParameterException
* @throws Exception
*/
public static String encode(String key,String data) {
if(data == null)
return null;
try{
//key的长度不能够小于16位字节
String A= data// 需要加密的字符串
String IV = // 向量
byte[] raw = key.getBytes();
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
IvParameterSpec iv = new IvParameterSpec(IV.getBytes());
AlgorithmParameterSpec paramSpec = iv;
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, paramSpec);
byte[] encrypted = cipher.doFinal(data.getBytes()); //对A 进行
String encrypted1 = new BASE64Encoder().encodeBuffer(encrypted);// 先用base64解密
encrypted1=encrypted1.replace("+", "!").replace("/", ",").replace("=", "]").replace("%", "@"); <span style="font-family: Arial, Helvetica, sans-serif;">//自身需求制定加密解密规则</span>
return encrypted1; //返回加密结果
}catch(Exception e){
e.printStackTrace();
return null;
}
}
注意细节!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!