package com.ruoyi.jianguan.util;
|
|
import javax.crypto.Cipher;
|
import javax.crypto.spec.IvParameterSpec;
|
import javax.crypto.spec.SecretKeySpec;
|
import java.util.Base64;
|
|
/**
|
* 充电桩交互的数据的加密解密
|
*/
|
public class AesEncryption {
|
|
/**
|
* 加密
|
* @param key
|
* @param iv
|
* @param data
|
* @return
|
*/
|
public static String encrypt(String key, String iv, String data) {
|
try {
|
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
|
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
|
IvParameterSpec ivParameterSpec = new IvParameterSpec(iv.getBytes());
|
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec);
|
byte[] encrypted = cipher.doFinal(data.getBytes());
|
return Base64.getEncoder().encodeToString(encrypted);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
/**
|
* 解密
|
* @param key
|
* @param iv
|
* @param encryptedData
|
* @return
|
*/
|
public static String decrypt(String key, String iv, String encryptedData) {
|
try {
|
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
|
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
|
IvParameterSpec ivParameterSpec = new IvParameterSpec(iv.getBytes());
|
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec);
|
byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(encryptedData));
|
return new String(decrypted);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
}
|