package com.mandi.common;
|
|
import java.io.UnsupportedEncodingException;
|
import java.security.InvalidAlgorithmParameterException;
|
import java.security.InvalidKeyException;
|
import java.security.NoSuchAlgorithmException;
|
import java.security.SecureRandom;
|
|
import javax.crypto.BadPaddingException;
|
import javax.crypto.Cipher;
|
import javax.crypto.IllegalBlockSizeException;
|
import javax.crypto.KeyGenerator;
|
import javax.crypto.NoSuchPaddingException;
|
import javax.crypto.SecretKey;
|
import javax.crypto.spec.IvParameterSpec;
|
import javax.crypto.spec.SecretKeySpec;
|
|
import org.apache.commons.codec.binary.Base64;
|
|
public class AESMethod {
|
public static String encryptPKCS7ForBase64(String pwd,String source,byte[] IV){
|
if(source==null||pwd==null)
|
return null;
|
try {
|
KeyGenerator keygen=KeyGenerator.getInstance("AES");
|
SecureRandom sr=SecureRandom.getInstance("SHA1PRNG");
|
sr.setSeed(pwd.getBytes());
|
keygen.init(128,sr);
|
SecretKey key=keygen.generateKey();
|
byte[] keyendoce=key.getEncoded();
|
SecretKeySpec keyspec=new SecretKeySpec(keyendoce, "AES");
|
Cipher cipher=Cipher.getInstance("AES/CBC/PKCS5Padding");
|
try {
|
cipher.init(Cipher.ENCRYPT_MODE,keyspec,new IvParameterSpec(IV));
|
byte[] sbytes=null;
|
sbytes = cipher.doFinal(source.getBytes("utf8"));
|
return Base64.encodeBase64String(sbytes) ;//byte2hexStr(sbytes); //这里也可以用base64来表示,这样解密的时候反解析base64
|
} catch (UnsupportedEncodingException e) {
|
System.out.println("加密过程中,getbyte有错误!");
|
e.printStackTrace();
|
} catch (InvalidAlgorithmParameterException e) {
|
e.printStackTrace();
|
}
|
} catch (NoSuchAlgorithmException e) {
|
e.printStackTrace();
|
} catch (NoSuchPaddingException e) {
|
e.printStackTrace();
|
} catch (InvalidKeyException e) {
|
e.printStackTrace();
|
} catch (IllegalBlockSizeException e) {
|
e.printStackTrace();
|
} catch (BadPaddingException e) {
|
e.printStackTrace();
|
}
|
return "";
|
}
|
|
|
public static String decryptPKCS7ForBase64(String pwd,String source,byte[] IV){
|
if(source==null||pwd==null)
|
return "";
|
byte[] sbytes=Base64.decodeBase64(source);//hexStr2bytes(source);
|
try {
|
KeyGenerator keygen=KeyGenerator.getInstance("AES");
|
SecureRandom sr=SecureRandom.getInstance("SHA1PRNG");
|
sr.setSeed(pwd.getBytes());
|
keygen.init(128,sr);
|
SecretKey key=keygen.generateKey();
|
byte[] keyendoce=key.getEncoded();
|
SecretKeySpec keyspec=new SecretKeySpec(keyendoce, "AES");
|
Cipher cipher=Cipher.getInstance("AES/CBC/PKCS5Padding");
|
try {
|
cipher.init(Cipher.DECRYPT_MODE, keyspec,new IvParameterSpec(IV));
|
byte[] dbytes=cipher.doFinal(sbytes);
|
return new String(dbytes,"utf8");
|
} catch (UnsupportedEncodingException e) {
|
System.out.println("解密过程中,编码错误!");
|
e.printStackTrace();
|
} catch (InvalidAlgorithmParameterException e) {
|
e.printStackTrace();
|
}
|
} catch (NoSuchAlgorithmException e) {
|
e.printStackTrace();
|
} catch (NoSuchPaddingException e) {
|
e.printStackTrace();
|
} catch (InvalidKeyException e) {
|
e.printStackTrace();
|
} catch (IllegalBlockSizeException e) {
|
e.printStackTrace();
|
} catch (BadPaddingException e) {
|
e.printStackTrace();
|
}
|
return "";
|
}
|
|
|
public static String encryptPKCS7ForBase64(byte[] pwd,String source,byte[] IV){
|
if(source==null||pwd==null)
|
return null;
|
try {
|
KeyGenerator keygen=KeyGenerator.getInstance("AES");
|
SecureRandom sr=SecureRandom.getInstance("SHA1PRNG");
|
sr.setSeed(pwd);
|
keygen.init(128,sr);
|
SecretKey key=keygen.generateKey();
|
byte[] keyendoce=key.getEncoded();
|
SecretKeySpec keyspec=new SecretKeySpec(keyendoce, "AES");
|
Cipher cipher=Cipher.getInstance("AES/CBC/PKCS5Padding");
|
try {
|
cipher.init(Cipher.ENCRYPT_MODE,keyspec,new IvParameterSpec(IV));
|
byte[] sbytes=null;
|
sbytes = cipher.doFinal(source.getBytes("utf8"));
|
return Base64.encodeBase64String(sbytes);//byte2hexStr(sbytes); //这里也可以用base64来表示,这样解密的时候反解析base64
|
} catch (UnsupportedEncodingException e) {
|
System.out.println("加密过程中,getbyte有错误!");
|
e.printStackTrace();
|
} catch (InvalidAlgorithmParameterException e) {
|
e.printStackTrace();
|
}
|
} catch (NoSuchAlgorithmException e) {
|
e.printStackTrace();
|
} catch (NoSuchPaddingException e) {
|
e.printStackTrace();
|
} catch (InvalidKeyException e) {
|
e.printStackTrace();
|
} catch (IllegalBlockSizeException e) {
|
e.printStackTrace();
|
} catch (BadPaddingException e) {
|
e.printStackTrace();
|
}
|
return "";
|
}
|
|
|
public static String decryptPKCS7ForBase64(byte[] pwd,String source,byte[] IV){
|
if(source==null||pwd==null)
|
return "";
|
byte[] sbytes=Base64.decodeBase64(source);//hexStr2bytes(source);
|
try {
|
KeyGenerator keygen=KeyGenerator.getInstance("AES");
|
SecureRandom sr=SecureRandom.getInstance("SHA1PRNG");
|
sr.setSeed(pwd);
|
keygen.init(128,sr);
|
SecretKey key=keygen.generateKey();
|
byte[] keyendoce=key.getEncoded();
|
SecretKeySpec keyspec=new SecretKeySpec(keyendoce, "AES");
|
Cipher cipher=Cipher.getInstance("AES/CBC/PKCS5Padding");
|
try {
|
cipher.init(Cipher.DECRYPT_MODE, keyspec,new IvParameterSpec(IV));
|
byte[] dbytes=cipher.doFinal(sbytes);
|
return new String(dbytes,"utf8");
|
} catch (UnsupportedEncodingException e) {
|
System.out.println("解密过程中,编码错误!");
|
e.printStackTrace();
|
} catch (InvalidAlgorithmParameterException e) {
|
e.printStackTrace();
|
}
|
} catch (NoSuchAlgorithmException e) {
|
e.printStackTrace();
|
} catch (NoSuchPaddingException e) {
|
e.printStackTrace();
|
} catch (InvalidKeyException e) {
|
e.printStackTrace();
|
} catch (IllegalBlockSizeException e) {
|
e.printStackTrace();
|
} catch (BadPaddingException e) {
|
e.printStackTrace();
|
}
|
return "";
|
}
|
}
|