package com.tickets.util;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.apache.log4j.Logger;
/**
* 加解密工具类
* @author ljw
* 2017年12月25日
*/
public class PwdUtil {
static Logger logger = Logger.getLogger(PwdUtil.class);
/**
* 加密
*
* @param content
* 需要加密的内容
* @param password
* 加密密码
* @return
*/
public static String encrypt(String content, String password) throws Exception {
try {
byte[] raw = password.getBytes("UTF-8");
if (raw.length != 16) {
throw new IllegalArgumentException("Invalid key size. " + password + ", 密钥 token 长度不是16 位");
}
javax.crypto.spec.SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
javax.crypto.Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec,
new javax.crypto.spec.IvParameterSpec(new byte[16])); // zero
byte[] fina = cipher.doFinal(content.getBytes("UTF-8"));
return new String(org.apache.commons.codec.binary.Base64.encodeBase64(fina));
} catch (Exception e) {
logger.error(e.getMessage(), e);
throw e;
}
}
/**
* 解密
*
* @param content
* 需要解密的内容
* @param password
* 加密密码
* @return
*/
public static String decrypt(String content, String password) throws Exception {
try {
byte[] raw = password.getBytes("UTF-8");
if (raw.length != 16) {
throw new IllegalArgumentException("Invalid key size. " + password + ", 密钥 token 长度不是16 位");
}
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, skeySpec, new IvParameterSpec(new byte[16]));
byte[] toDecrypt = org.apache.commons.codec.binary.Base64.decodeBase64(content.getBytes());
byte[] original = cipher.doFinal(toDecrypt);
return new String(original, "UTF-8");
} catch (IllegalArgumentException e) {
logger.error(e.getMessage(), e);
throw e;
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
return null;
}
}
AES加密之后经过Base64转码
最新推荐文章于 2024-07-08 17:27:15 发布