From cf8231017d9f3a6180d8cbf713c9d91be03759c5 Mon Sep 17 00:00:00 2001 From: its Date: Fri, 26 Apr 2024 11:41:08 +0800 Subject: [PATCH] =?UTF-8?q?[update]=20AES=E7=B1=BB=E5=85=BC=E5=AE=B9ECB(?= =?UTF-8?q?=E8=99=BD=E7=84=B6=E4=B8=8D=E5=86=8D=E5=BB=BA=E8=AE=AE=E5=88=A9?= =?UTF-8?q?=E7=94=A8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UPDATE.md | 1 + src/main/java/com/yexuejc/base/encrypt/AES.java | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/UPDATE.md b/UPDATE.md index 7223917..4188526 100644 --- a/UPDATE.md +++ b/UPDATE.md @@ -8,6 +8,7 @@ yexuejc-base 更新记录 1. [FileUtil.java](src/main/java/com/yexuejc/base/util/FileUtil.java)增加读取大文件自定义方法和单纯读取方法 2. JsonUtil 增加objToMap;优化obj2Json 3. DateUtil 标准化日期时间的转换函数 +4. [AES.java](src/main/java/com/yexuejc/base/encrypt/AES.java) 兼容ECB(虽然不再建议利用) --- #### version :1.5.2-jre11 diff --git a/src/main/java/com/yexuejc/base/encrypt/AES.java b/src/main/java/com/yexuejc/base/encrypt/AES.java index 0941afa..213786b 100644 --- a/src/main/java/com/yexuejc/base/encrypt/AES.java +++ b/src/main/java/com/yexuejc/base/encrypt/AES.java @@ -93,7 +93,10 @@ public class AES { byte[] plaintext = new byte[plaintextLength]; System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length); SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(charset), AES_ALGORITHM); - IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes(charset)); + IvParameterSpec ivspec = null; + if(!algorithm.name.contains("ECB")){ + ivspec = new IvParameterSpec(iv.getBytes(charset)); + } cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec); byte[] encrypted = cipher.doFinal(plaintext); return Base64.getEncoder().encodeToString(encrypted); @@ -115,7 +118,10 @@ public class AES { byte[] encrypted = Base64.getDecoder().decode(data); Cipher cipher = Cipher.getInstance(algorithm.name); SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(charset), AES_ALGORITHM); - IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes(charset)); + IvParameterSpec ivspec = null; + if(!algorithm.name.contains("ECB")){ + ivspec = new IvParameterSpec(iv.getBytes(charset)); + } cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec); byte[] original = cipher.doFinal(encrypted); return new String(original, charset).trim();