hz-zhhq-app-service/greenH5modul/.svn/pristine/64/64f0798dc6c4f8949b7413c246d...

128 lines
3.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* AES 128bit 加密解密工具类
*/
package com.nationalelectric.greenH5.utils;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
public class AesEncryptUtil {
// 使用AES-128-CBC加密模式key需要为16位,key和iv可以相同
public static final String KY2 = "greenh5java12345";
public static final String IV = "greenh5java12345";
/**
* 加密方法
*
* @param data
* 要加密的数据
* @param key
* 加密key
* @param iv
* 加密iv
* @return 加密的结果
* @throws Exception
*/
public static String encrypt(String data, String key, String iv) throws Exception {
if (data == null || data.equals("")) {
return null;
}
try {
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");// "<22>㷨/ģʽ/<2F><><EFBFBD>ʽ"
int blockSize = cipher.getBlockSize();
byte[] dataBytes = data.getBytes();
int plaintextLength = dataBytes.length;
if (plaintextLength % blockSize != 0) {
plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));
}
byte[] plaintext = new byte[plaintextLength];
System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
byte[] encrypted = cipher.doFinal(plaintext);
Base64 base64 = new Base64();
encrypted = base64.encode(encrypted);
return new String(encrypted, "UTF-8");
} catch (Exception e) {
return null;
}
}
/**
* 解密方法
*
* @param data
* 要解密的数据
* @param key
* 解密key
* @param iv
* 解密iv
* @return 解密的结果
* @throws Exception
*/
public static String desEncrypt(String data, String key, String iv) throws Exception {
if (data == null || data.trim().equals("")) {
return null;
}
try {
byte[] b = data.getBytes();
Base64 base64 = new Base64();
byte[] encrypted1 = base64.decode(b);
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);
byte[] original = cipher.doFinal(encrypted1);
String originalString = new String(original, "UTF-8");
return originalString;
} catch (Exception e) {
return null;
}
}
/**
* 使用默认的key和iv加密
*
* @param data
* @return
* @throws Exception
*/
public static String encrypt(String data) throws Exception {
return encrypt(data, KY2, IV);
}
/**
* 使用默认的key和iv解密
*
* @param data
* @return
* @throws Exception
*/
public static String desEncrypt(String data) throws Exception {
return desEncrypt(data, KY2, IV);
}
// /**
// * 测试
// */
// public static void main(String args[]) throws Exception {
//
// }
}