| package cc.mrbird.febs.pay.util; | 
|   | 
| import javax.crypto.Cipher; | 
| import javax.crypto.spec.SecretKeySpec; | 
| import java.security.Security; | 
| import java.util.Base64; | 
|   | 
| /** | 
|  * AES加解密工具类 | 
|  * @author chenyf | 
|  * @date 2018-12-15 | 
|  */ | 
| public class AESUtil { | 
|     //   private static final Logger logger = LoggerFactory.getLogger(AesUtils.class); | 
|         public static final String ALGORITHM = "AES/ECB/PKCS5Padding"; | 
|         public static final String UTF_8 = "UTF-8"; | 
|         public static final String AES = "AES"; | 
|         public static final String BC = "BC"; | 
|   | 
|   | 
|         static { | 
|             //仅加载一次,不要多次加载,可能会导致内存溢出 | 
|             Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); | 
|         } | 
|   | 
|         /** | 
|          * 网联敏感字段AES加密 | 
|          * | 
|          * @param str 敏感字段原文 | 
|          * @param key AES密钥 必须是8位、16位、24位 | 
|          * @return | 
|          */ | 
|         public static String Aes256Encode(String str, String key) { | 
|           //  if(StringUtil.isNotBlank(str)) { | 
|                 try { | 
|                     Cipher cipher = Cipher.getInstance(ALGORITHM, BC); | 
|                     SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(UTF_8), AES); // 生成加密解密需要的Key | 
|                     cipher.init(Cipher.ENCRYPT_MODE, keySpec); | 
|                     byte[] result = cipher.doFinal(str.getBytes(UTF_8)); | 
|                     return Base64.getEncoder().encodeToString(result); | 
|                 } catch (Exception e) { | 
|                    // logger.error("Aes256Encode error:", e); | 
|                     return null; | 
|                 } | 
|   | 
|         } | 
|   | 
|         /** | 
|          * 网联敏感字段密文解密 | 
|          * | 
|          * @param base64Str 要被解密的密文.做了base64编码 base64Str | 
|          * @param key       AES密钥 必须是8位、16位、24位 | 
|          * @return 解密后的字符串 | 
|          */ | 
|         public static String Aes256Decode(String base64Str, String key) { | 
|            // if (StringUtil.isNotBlank(base64Str)) { | 
|                 String result = null; | 
|                 try { | 
|                     Cipher cipher = Cipher.getInstance(ALGORITHM, BC); | 
|                     SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(UTF_8), AES); // 生成加密解密需要的Key | 
|                     cipher.init(Cipher.DECRYPT_MODE, keySpec); | 
|                     byte[] decoded = cipher.doFinal(Base64Util.decode(base64Str)); | 
|                     result = new String(decoded, "UTF-8"); | 
|                 } catch (Exception e) { | 
|                     e.printStackTrace(); | 
|                 } | 
|                 return result; | 
|         } | 
|   | 
|   | 
|     } |