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