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解密
    }
      
    
    }
  • 相关阅读:
    微信小程序自定义分享图片
    rtop:一个通过 SSH 监控远程主机的交互式工具【转】
    mysql双主+keepalived【转】
    诡异的Linux磁盘空间被占用问题,根目录满了,df和du占用不一样【转】
    linux磁盘空间查看inode
    python数据库操作
    Jenkins 安装及使用
    编程入门python之定义函数【转】
    grep和sed匹配多个字符关键字的用法
    linux 如何删除文件夹下面的文件和文件夹,只保留两个文件
  • 原文地址:https://www.cnblogs.com/yy123/p/5430236.html
Copyright © 2011-2022 走看看