AES加密

2018-09-18 06:33:06来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

     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;
     }
              
         
    
}

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:mybatis自动生成代码,逆向工程

下一篇:Java基础之数组