Mã hóa AES
Quy trình mã hóa
- Bước 1: Sử dụng 16 byte đầu của encryptKey làm IV.
- Bước 2: Tiến hành mã hóa chuỗi với encryptKey và IV.
- Bước 3: Trả về chuỗi mã hóa.
Code chi tiết (java):
public static String encryptAES(String data, String encryptKey) {
try {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
byte[] iv = Arrays.copyOf(Hex.decodeHex(encryptKey), 16);
IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);
SecretKey priKey = new SecretKeySpec(Hex.decodeHex(encryptKey), "AES");
cipher.init(Cipher.ENCRYPT_MODE, priKey, ivParameterSpec);
byte[] plainText = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
return Base64.getEncoder().encodeToString(plainText);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
Quy trình giải mã
- Bước 1: Lấy IV từ 16 byte đầu của Key.
- Bước 2: Tiến hành giải mã chuỗi với Key và IV.
- Bước 3: Trả về chuỗi đã giải mã.
Code chi tiết (java):
public static String decryptAES(String data, String encryptKey) {
try {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
byte[] iv = Arrays.copyOf(Hex.decodeHex(encryptKey), 16);
IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);
SecretKey priKey = new SecretKeySpec(Hex.decodeHex(encryptKey), "AES");
cipher.init(Cipher.DECRYPT_MODE, priKey, ivParameterSpec);
byte[] plainText = cipher.doFinal(Base64.getDecoder().decode(data));
return new String(plainText);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}