AES加密

Posted chaiming520

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AES加密相关的知识,希望对你有一定的参考价值。

     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加密的主要内容,如果未能解决你的问题,请参考以下文章

什么是AES加密?详解AES加密算法原理流程

aes加密算法C代码

干货分享 | 对称加密及AES加密算法

加密算法之AES

AES加密技术

aes加密安全吗