zoukankan      html  css  js  c++  java
  • Java-AES加密解密

    package com.jy.demo.web;
    
    
    import java.security.Provider;
    import java.security.SecureRandom;
    import java.security.Security;
    import java.util.Arrays;
    
    import javax.crypto.Cipher;
    import javax.crypto.KeyGenerator;
    import javax.crypto.SecretKey;
    import javax.crypto.spec.IvParameterSpec;
    import javax.crypto.spec.SecretKeySpec;
    
    import org.apache.commons.codec.binary.Base64;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    public class AESUtils{
      public static final String IV = "2015030120123456";
      private static final Logger logger = LoggerFactory.getLogger(AESUtils.class);
    
      public static byte[] aesEncrypt(String content, String pkey)
      {
        try
        {
          SecretKeySpec key = new SecretKeySpec(pkey.getBytes(), "AES");
          Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
          IvParameterSpec iv = new IvParameterSpec("2015030120123456".getBytes());
          cipher.init(1, key, iv);
          return cipher.doFinal(content.getBytes("UTF-8"));
        }
        catch (Exception e) {
          e.printStackTrace();
        }
        return null;
      }
    
      private static SecretKey generateKey(String secretKey)
        throws Exception
      {
        Provider p = Security.getProvider("SUN");
        SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG", p);
        secureRandom.setSeed(secretKey.getBytes());
        KeyGenerator kg = KeyGenerator.getInstance("AES");
        kg.init(secureRandom);
    
        return kg.generateKey();
      }
    
      public static String aesEncryptStr(String content, String pkey)
      {
        byte[] aesEncrypt = aesEncrypt(content, pkey);
        logger.debug("aesEncrypt String:" + Arrays.toString(aesEncrypt));
        String base64EncodeStr = Base64.encodeBase64String(aesEncrypt);
        logger.debug("aesEncrypt base64EncodeStr:" + base64EncodeStr);
        return base64EncodeStr;
      }
    
      public static String aesDecodeStr(String content, String pkey)
        throws Exception
      {
        byte[] base64DecodeStr = Base64.decodeBase64(content);
        logger.debug("base64DecodeStr String:" + Arrays.toString(base64DecodeStr));
        byte[] aesDecode = aesDecode(base64DecodeStr, pkey);
        if (aesDecode == null) {
          return null;
        }
        String result = new String(aesDecode, "UTF-8");
        logger.debug("aesDecode result:" + result);
        return result;
      }
    
      public static byte[] aesDecode(byte[] content, String pkey)
      {
        try
        {
          SecretKeySpec key = new SecretKeySpec(pkey.getBytes(), "AES");
          IvParameterSpec iv = new IvParameterSpec("2015030120123456".getBytes("UTF-8"));
          Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
          cipher.init(2, key, iv);
          return cipher.doFinal(content);
        }
        catch (Exception e) {
          e.printStackTrace();
        }
        return null;
      }
      
      public static void main(String[] args) throws Exception {
          System.out.println( AESUtils.aesEncryptStr("123456", "abcdnnnnnn123456"));//根据key加密
          System.out.println( AESUtils.aesDecodeStr("i/urUHvLlepO+NWthBU7AA==", "abcdnnnnnn123456"));//根据加密后密码还有加密key解密
    }
      
    
    }
  • 相关阅读:
    实验-继承&super.doc
    Python库
    Github高级搜索
    代码报错记录
    编程问题解决
    百科
    【Android】添加依赖包
    【Android】导航栏(加图片icon)和不同页面的实现(viewpager+tablayout)
    【Android】Android Studio真机调试的问题统整
    【AD】自己画板的备忘
  • 原文地址:https://www.cnblogs.com/yy123/p/5430236.html
Copyright © 2011-2022 走看看