AES128加密是最常见的一种数据加密方式,可以自己设置key值,下面就贴一个简单的数据加密方法,很简单直接调用就行:
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Hex;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
/**
* AES128加解密
*/
@Slf4j
public class AESUtil {
/**
* AES-128数据加密
*/
public static String Encrypt(String src, String key) {
try{
log.info("start encrypt data!");
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(),"AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
cipher.init(Cipher.ENCRYPT_MODE,skeySpec);
byte[] encrypted = cipher.doFinal(src.getBytes());
return new String(Hex.encodeHex(encrypted)).toUpperCase();
}catch (Exception e) {
log.error("encrypt data failed",e);
return null;
}
}
/**
* AES-128数据解密
*/
public static String Decrypt(String src, String key){
try{
log.info("start decrypt data!");
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(),"AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
cipher.init(Cipher.DECRYPT_MODE,skeySpec);
byte[] dncrypted = cipher.doFinal(Hex.decodeHex(src.toCharArray()));
return new String(dncrypted);
}catch (Exception e){
log.error("decrypt data failed",e);
return null;
}
}
/**
* test
*/
public void test() {
String key = "abcdefg";
String data = "0123456789";
String jiamihou = AESUtil.Encrypt(data,key);
log.info("加密后数据是:",jiamihou);
String jiemihou = AESUtil.Decrypt(data,key);
log.info("解密后数据是:",jiemihou);
}
}