1. 程式人生 > >AES/CBC/PKCS5Padding對稱加密

AES/CBC/PKCS5Padding對稱加密

throw imp string base64 nbsp deb try encrypt java

 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 }

AES/CBC/PKCS5Padding對稱加密