此次算法支持16位密钥和32位密钥加密,如果密钥长度是32位,则需要更新加密包,16位密钥则不需要更新加密包,不清楚怎样更新加密包的,可以查看加密专栏另一篇文章,在此不再赘述
如果只需要看AES128加密则只需要下面这个方法就可以了
/**
* AES128加密
* @param src 加密原串
* @param key 密钥
* @return
*/
public static String aesEncrypt(String src, String key) {
try{
if (key == null || key.equals("")) {
logger.info("密钥为空:"+ key);
return null;
}
byte[] raw = key.getBytes("utf-8");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");//"算法/模式/补码方式"
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(src.getBytes("utf-8"));
return Base64Coder.encodeLines(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。
// 若有换行符困扰则使用:
// return Base64Coder.encodeLines(encrypted).replaceAll("[\\s*\t\n\r]", "");
}catch(Exception e){
e.printStackTrace();
return null;
}
}