zoukankan      html  css  js  c++  java
  • AES/CBC/PKCS5Padding对称加密

     1 package unit;
     2 import javax.crypto.Cipher;
     3 import javax.crypto.spec.IvParameterSpec;
     4 import javax.crypto.spec.SecretKeySpec;
     5 
     6 import org.apache.commons.codec.binary.Base64;
     7 /**
     8  * AES/CBC/PKCS5Padding 对称加密
     9  * @author jia
    10  *
    11  */
    12 public class AES_CBC {
    13 
    14      private static final String ALGORITHM = "AES/CBC/PKCS5Padding";
    15         /**
    16          * 数据加密
    17          * @param srcData
    18          * @param key
    19          * @param iv
    20          * @return
    21          */
    22         public static String encrypt(String srcData,byte[] key,byte[] iv) 
    23         {
    24             SecretKeySpec keySpec = new SecretKeySpec(key, "AES");
    25             Cipher cipher;
    26             String encodeBase64String = null;
    27             try {
    28                 cipher = Cipher.getInstance(ALGORITHM);
    29                 cipher.init(Cipher.ENCRYPT_MODE, keySpec, new IvParameterSpec(iv));
    30                 byte[] encData = cipher.doFinal(srcData.getBytes());
    31                 encodeBase64String = Base64.encodeBase64String(encData);
    32             } catch (Exception e) {
    33                 e.printStackTrace();
    34             }
    35             return encodeBase64String;
    36         }
    37 
    38         /**
    39          * 数据解密
    40          * @param encDataStr
    41          * @param key
    42          * @param iv
    43          * @return
    44          */
    45         public static String decrypt(String encDataStr,byte[] key,byte[] iv) 
    46         {
    47             byte[] encData = Base64.decodeBase64(encDataStr);
    48             SecretKeySpec keySpec = new SecretKeySpec(key, "AES");
    49             Cipher cipher;
    50             byte[] decbbdt = null;
    51             try {
    52                 cipher = Cipher.getInstance(ALGORITHM);
    53                 cipher.init(Cipher.DECRYPT_MODE, keySpec, new IvParameterSpec(iv));
    54                 decbbdt = cipher.doFinal(encData);
    55             } catch (Exception e) {
    56                 e.printStackTrace();
    57             } 
    58             return new String(decbbdt);
    59         }
    60 
    61     public static void main(String[] args) throws Exception {
    62         String str = "fot4Ginq4iey7kLUUmA+dA==";
    63         byte[] s = Base64.decodeBase64(str);
    64         String s2 = "12345678ilkljklkjv";
    65         String iv = "1234567890123456";
    66         System.out.println("加密前: "+s2);
    67         String encrypt = AES_CBC.encrypt(s2, s, iv.getBytes());
    68         System.out.println("加密后: "+new String(encrypt));
    69         String decrypt = AES_CBC.decrypt(encrypt, s, iv.getBytes());
    70         System.out.println("解密后: "+decrypt);
    71     }
    72 }
  • 相关阅读:
    数据同步
    闭包的内存泄漏解决办法
    No module named 'MySQLdb'
    pqi 更换pip 国内源
    BZOJ 1934 [Shoi2007]Vote 善意的投票
    BZOJ 2038 [2009国家集训队]小Z的袜子(hose)
    BZOJ 1002 [FJOI2007]轮状病毒
    BZOJ 3442 学习小组
    BZOJ 3261 最大异或和
    BZOJ 4029 [HEOI2015]定价
  • 原文地址:https://www.cnblogs.com/redhat0019/p/8031908.html
Copyright © 2011-2022 走看看