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转码
猜你喜欢
转载自blog.csdn.net/lujunwei0205/article/details/78894346
今日推荐
周排行