码迷,mamicode.com
首页 > 其他好文 > 详细

AES加密

时间:2018-09-11 14:20:45      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:try   ext   转化   ide   string   stl   param   private   turn   

     AES加密是我在做互联网广告时遇到的,像支付一般采用MD5加密、RSA加密。

public class AES {
    // 算法名称
     final String KEY_ALGORITHM = "AES";
     // 加解密算法/模式/填充方式
     final String algorithmStr = "AES/CBC/PKCS7Padding";
     //
     private Key key;
     private Cipher cipher;
     boolean isInited = false;

         
     public void init(byte[] keyBytes) {           
      // 初始化
      Security.addProvider(new BouncyCastleProvider());
      // 转化成JAVA的密钥格式       
      key = new SecretKeySpec(keyBytes, KEY_ALGORITHM);
      try {
       // 初始化cipher
       cipher = Cipher.getInstance(algorithmStr);
      } catch (NoSuchAlgorithmException e) {       
          e.printStackTrace();
      } catch (NoSuchPaddingException e) {      
          e.printStackTrace();
      }
     }
      
     /**
      * 加密方法
      *
      * @param content
      *            要加密的字符串
      * @param keyBytes
      *            加密密钥
      * @return
      */
     public byte[] encrypt(byte[] content, byte[] keyBytes) {
          
          byte[] encryptedText = null;
          init(keyBytes);
          byte[] md5Key = keyBytes;                            //此处,key 和 iv 是一样的
          IvParameterSpec iv = new IvParameterSpec(md5Key);// 使用CBC模式,需要一个向量iv      
          
          try {
           cipher.init(Cipher.ENCRYPT_MODE, key, iv);
           encryptedText = cipher.doFinal(content);
          } catch (Exception e) {      
           e.printStackTrace();
          }
          return encryptedText;
     }
    
     /**
      * 解密方法
      *
      * @param encryptedData
      *            要解密的字符串
      * @param keyBytes
      *            解密密钥
      * @return
      */
     public byte[] decrypt(byte[] encryptedData, byte[] keyBytes) {
      byte[] encryptedText = null;
      init(keyBytes);    
      init(keyBytes);
      byte[] md5Key = keyBytes;                            //key 和 iv 是一样的
      IvParameterSpec iv = new IvParameterSpec(md5Key);// 使用CBC模式,需要一个向量iv    

      try {
       cipher.init(Cipher.DECRYPT_MODE, key, iv);
       encryptedText = cipher.doFinal(encryptedData);
      } catch (Exception e) {      
       e.printStackTrace();
      }
      return encryptedText;
     }
              
         
    
}

AES加密

标签:try   ext   转化   ide   string   stl   param   private   turn   

原文地址:https://www.cnblogs.com/chaiming520/p/9626764.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!