import com.sun.org.apache.xml.internal.security.utils.Base64; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; public class Main { //算法/模式/填充 public static final String TRANSFORMATION_AES = "AES/CBC/PKCS5Padding"; public static final String TRANSFORMATION_DES = "DES/CBC/PKCS5Padding"; //算法 public static final String ALGORITHM_AES = "AES"; public static final String ALGORITHM_DES = "DES"; public static void main(String[] args) { String input = "abcd1234"; String key8 = "12345678"; String key16 = "1234567890123456"; System.out.println("原 文:"+input); String enString = encrypt(input,key8,TRANSFORMATION_DES,ALGORITHM_DES); System.out.println("DES加密:"+enString); String deString = decrypt(enString, key8,TRANSFORMATION_DES,ALGORITHM_DES); System.out.println("DES解密:"+deString); enString = encrypt(input,key16,TRANSFORMATION_AES,ALGORITHM_AES); System.out.println("AES加密:"+enString); deString = decrypt(enString, key16,TRANSFORMATION_AES,ALGORITHM_AES); System.out.println("AES解密:"+deString); enString = encrypt_AES_ECB_PKCS5Padding(input,key16); System.out.println("AES加密:"+enString); deString = decrypt_AES_ECB_PKCS5Padding(enString, key16); System.out.println("AES解密:"+deString); } public static String encrypt(String input,String key,String transformation,String algorithm) { byte[] enResult = null; try { Cipher cipher = Cipher.getInstance(transformation); SecretKey secretKey = new SecretKeySpec(key.getBytes(),algorithm); IvParameterSpec iv = new IvParameterSpec(key.getBytes()); cipher.init(Cipher.ENCRYPT_MODE, secretKey,iv); enResult = cipher.doFinal(input.getBytes()); } catch (Exception e) { } return Base64.encode(enResult); } public static String decrypt(String input,String key,String transformation,String algorithm){ byte[] deResult = null; try { Cipher cipher = Cipher.getInstance(transformation); SecretKey secretKey = new SecretKeySpec(key.getBytes(),algorithm); IvParameterSpec iv = new IvParameterSpec(key.getBytes()); cipher.init(Cipher.DECRYPT_MODE, secretKey,iv); deResult = cipher.doFinal(Base64.decode(input)); } catch (Exception e) { e.printStackTrace(); } return new String(deResult); } public static String encrypt_AES_ECB_PKCS5Padding (String input,String key) { byte[] enResult = null; try { Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); SecretKey secretKey = new SecretKeySpec(key.getBytes(),"AES"); cipher.init(Cipher.ENCRYPT_MODE, secretKey); enResult = cipher.doFinal(input.getBytes()); } catch (Exception e) { } return Base64.encode(enResult); } public static String decrypt_AES_ECB_PKCS5Padding (String input,String key) { byte[] deResult = null; try { Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); SecretKey secretKey = new SecretKeySpec(key.getBytes(),"AES"); cipher.init(Cipher.DECRYPT_MODE, secretKey); deResult = cipher.doFinal(Base64.decode(input)); } catch (Exception e) { } return new String(deResult); } }