package com.doumee.core.utils;
|
|
import javax.crypto.Cipher;
|
import javax.crypto.spec.SecretKeySpec;
|
import java.nio.charset.StandardCharsets;
|
import java.util.Base64;
|
|
public class AESUtils {
|
|
private static final String ALGORITHM = "AES";
|
private static final String TRANSFORMATION = "AES/ECB/PKCS5Padding"; // 使用 ECB 模式并使用 PKCS5Padding 填充
|
|
public static String encrypt(String data, String key) throws Exception {
|
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), ALGORITHM);
|
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
|
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
|
byte[] encryptedBytes = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
|
return Base64.getEncoder().encodeToString(encryptedBytes);
|
}
|
|
public static String decrypt(String encryptedData, String key) throws Exception {
|
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), ALGORITHM);
|
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
|
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
|
byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedData));
|
return new String(decryptedBytes, StandardCharsets.UTF_8);
|
}
|
|
public static void main(String[] args) throws Exception {
|
String key = "qtixtsujiokdgrqq"; // 16 字节的密钥
|
String decryptedData = decrypt("/V65QRvmgommnLLJQV+JwE7L2FShGboL3TojZL4Up2JzeR/NK7rxwFqVHU4f9BTT2PYgDX5ULBGjbWnrwNpfhB1j1aUWSuItXvAAutz5L7f+bnZGmNNsUzG0KRyDu77e1fkweqfuSqZ7C4dmt6vy+DdYAMSC/RVBx/dOCU4gNcf0SupvH57WHPTt3KpB3OmbXBg74DiAi2JG7+giWDLnDrDBahhTgMSu0u1f3K5SMcE9tVVZCHGkzNAV5owwo/7yyvFMdBELqO/pgtfI1syaHgPdskMXUwa1j6HdLUcAqvaF7PzJOv++VGNqnCm2n2UBoIPEvKkn9TuI3LHHT26v2H0KoRmJdPIhme0eGqyXqAkTYFbAd/6OGUiwJO1vZYZDW/fmtKNThP0UOFLvJ6jVW5XrvIdmjzoF8iOxyyj+N3/3Mp4SinH9gSBuz/TbabH4zXL0Np1UvRmJjtkIEa+q8DEch0HcyH2ABULnu/xyxbIXhLQ1lgBZ2GJ8lO3ynvSSwkbzbd1vP5zWxKIYRDTf5qRk3eDwzXNbmcY6DFPYepS3ceh0kl4iScqG+AO/bvxTqnmm6/nrYVI8qHq7GCWthiTYX0AzulhT7ceyEfMMD4zuz8gbWTfqQtIcDGHeN7gZuFUcwRfHG9sEN7Vkle6QSDZumjODSbrYiTTruQXCSSiDVoXFDK24GvKaNMKB2lh8qcV1sldpyAlgeOKCbYWyBiEG/5ZNZH0iHtrIXn/ebrs6kzMSFREw+CVvgrkpZZ04MP5QGMFEMr3+Zg4KtwYraSoWGg8Pn1MgN/dBCHOKnpCOMW2I8n+sKKZMJh5YkhrEtknf7Zvi8lpZX5Sjz5DOA3vaxy8E0YPbrjRxqlgW8psy5R6ZwDP9jfGIOG0gS0gPewm8xJRYYLEk7vbhwBW2hQ==", key);
|
|
System.out.println("" + decryptedData);
|
}
|
}
|