AESUtil.class
import java.io.File;
import java.security.Security;
import java.security.spec.AlgorithmParameterSpec;
import java.util.*;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang.StringUtils;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import com.sun.istack.internal.NotNull;
public class AESUtil {
private static final String CHARSET_NAME = "UTF-8";
private static final String AES_NAME = "AES";
// 加密模式
public static final String ALGORITHM = "AES/CBC/PKCS7Padding";
// 密钥
// public static final String KEY = "6agrioBE1D9yoGOX4yyDMyMFs72jYvJ8";
// // 位偏移
// public static final String IV = "6agrioBE1D9yoGOX";
static {
Security.addProvider(new BouncyCastleProvider());
}
/*加密*/
// public String encrypt(@NotNull String content,String key,String iv) {
// byte[] result = null;
// try {
// Cipher cipher = Cipher.getInstance(ALGORITHM);
// SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(CHARSET_NAME), AES_NAME);
// AlgorithmParameterSpec paramSpec = new IvParameterSpec(iv.getBytes());
// cipher.init(Cipher.ENCRYPT_MODE, keySpec, paramSpec);
// result = cipher.doFinal(content.getBytes(CHARSET_NAME));
// } catch (Exception e) {
// e.printStackTrace();
// }
// return Base64.encodeBase64String(result);
// }
/*
* 解密
*/
public String decrypt(@NotNull String content,String key,String iv) {
try {
Cipher cipher = Cipher.getInstance(ALGORITHM);
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(CHARSET_NAME), AES_NAME);
AlgorithmParameterSpec paramSpec = new IvParameterSpec(iv.getBytes());
cipher.init(Cipher.DECRYPT_MODE, keySpec, paramSpec);
return new String(cipher.doFinal(Base64.decodeBase64(content)), CHARSET_NAME);
} catch (Exception e) {
e.printStackTrace();
}
return StringUtils.EMPTY;
}
/**
* 读取加密前的exexl 返回一个集合对象
* @param path
* @return
*/
public static HashSet<DataOne> getDataOnes(String path){
HashSet<DataOne> ones = new HashSet<DataOne>();
ExcelData excelData = new ExcelData();
try {
List<Map<String, String>> maps = ExcelData.redExcel(path);
for (Map<String, String> map : maps) {
Set<String> ks = map.keySet();
Iterator<String> it = ks.iterator();
DataOne one = new DataOne();
while(it.hasNext()){
String n = it.next();
if(n.equals("CONTRACT_CURRENT_FLAG")){
one.setConteactCurrentFlag(map.get(n));
}else if(n.equals("VIN")){
one.setVin(map.get(n));
}else if(n.equals("DEALER_ENCRYPTION_KEY")){
one.setKey(map.get(n));