Files
yexuejc-base/UPDATE.md
maxf 7f8c46fa9b 🚧 进行中的工作/🔄 重构/ 测试: 优化AES、DES3和RSA加密实现并增强安全性
- 修改DateConsts中的ISO_8601时间格式,使用XXX代替xxx以符合标准时区偏移表示
- 完善AES类注释及文档说明,明确加密模式支持情况和参数要求
- 优化AES加解密逻辑,去除不必要的数据块填充操作,直接使用原始数据进行加解密
- 增强AES异常处理机制,统一捕获并封装异常防止信息泄露
- 在AES中增加获取当前算法的方法,并完善各个getter/setter方法的注释和校验
- 重构DES3类,改进密钥长度验证逻辑,确保密钥非空且满足最低长度要求
- 改进DES3加密过程,使用SecureRandom生成随机IV并向量与加密结果合并存储
- 更新DES3解密流程,从加密数据中分离出IV用于解密,提高安全性
- 添加generateKey私有方法用于生成3DES密钥对象,集中管理密钥创建过程
- 优化DES3填充方法padding,当数据长度恰好为8的倍数时不进行多余填充
- 修订RSA类结构,将内部静态类Instace更名为Instance并调整访问权限
- 修改RSA字段为volatile类型,确保多线程环境下的可见性和一致性
- 完善RSA密钥生成方法initKeys,支持临时设置Base64URLSafe标志并在执行后恢复原值
- 优化RSA密钥文件写入方式,使用Files.writeString替代旧版方法提升性能
- 补充RSA获取公私钥方法的返回值说明和可能抛出的具体异常类型
- 改进RSA加密解密方法,支持传入base64URLSafe参数控制编码格式
- 重构RSA核心加解密逻辑encrypt/decrypt,抽取getKeyLength方法计算密钥长度
- 引入BouncyCastleProvider支持特定SHA3签名算法的RSA实现
- 增强RSA分段编解码rsaSplitCodec方法,加入最大块大小有效性检查
- 优化RSA签名verify方法,提取复合签名字符串解析逻辑至独立extractSignature方法
- 完善RSA2各类获取公私钥方法的返回值说明和详细的异常描述
- 修复RSA2中JcaPEMKeyConverter未指定Provider的问题,统一使用BouncyCastleProvider
- 整体增强各加密类的安全性、健壮性和代码可维护性
2025-12-12 18:02:13 +08:00

446 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
yexuejc-base 更新记录
------------------
#### version 1.6.0-jre21
**time 2025-12-11 18:23:15** <br/>
**branch** jre21 <br/>
**update** <br/>
1. 全面升级到JDK21
---
#### version 1.5.7-jre11
**time 2025-12-11 18:10:47** <br/>
**branch** jre11 <br/>
**update** <br/>
1. **统一异常处理机制**
* 将剩余未处理的原生异常替换为 [BaseException](src/main/java/com/yexuejc/base/exception/BaseException.java)
* 增强异常消息国际化支持
2. **功能增强**
* [AES](src/main/java/com/yexuejc/base/encrypt/AES.java) 增强密钥管理安全性
* [StrUtil](src/main/java/com/yexuejc/base/util/StrUtil.java) 增加新的字符串处理方法
3. **代码质量提升**
* 修复 [ObjUtil](src/main/java/com/yexuejc/base/util/ObjUtil.java) 中的潜在空指针问题
* 统一工具类中的编码规范
4. **测试兼容性**
* 增加针对新功能的单元测试
* 所有测试用例通过,确保代码稳定性
5. **向下兼容性说明**
* 保持API签名不变
* 建议升级时注意异常处理方式的变化
---
#### version 1.5.6-jre11
**time 2025-9-23 23:10:00** <br/>
**branch** jre11 <br/>
**update** <br/>
1. **统一异常处理机制**
* 所有src/main中的非[BaseException](src/main/java/com/yexuejc/base/exception/BaseException.java)异常均已替换为[BaseException](src/main/java/com/yexuejc/base/exception/BaseException.java)
* 支持多语言异常消息,全面支持国际化
2. **异常消息国际化**
* 在[ExpCode](src/main/java/com/yexuejc/base/constant/ExpCode.java)中新增异常常量FILE_NOT_EXIST、FILE_PARSE_FAILED、FILE_NOT_CSV_FORMAT、MD5_ALGORITHM_UNAVAILABLE、SHA256_ALGORITHM_UNAVAILABLE、INVALID_KEY_LENGTH
* 更新多语言资源文件msg_zh_CN.properties、msg_en_US.properties
3. **修改文件及影响**
* [FileUtil.java](src/main/java/com/yexuejc/base/util/FileUtil.java): 修改RuntimeException、IOException为BaseException新增处理CSV字符串内容的重载方法
* [StrUtil.java](src/main/java/com/yexuejc/base/util/StrUtil.java): 修改ThreadLocal中的RuntimeException为BaseException
* [ThreeDES.java](src/main/java/com/yexuejc/base/util/ThreeDES.java): 修改InvalidKeyException为BaseException统一异常处理
* [ObjUtil.java](src/main/java/com/yexuejc/base/util/ObjUtil.java): 优化异常输出使用logger替代printStackTrace
4. **测试兼容性**
* 更新测试代码以适应新的异常处理机制
* 所有测试用例通过,保证代码稳定性
5. **向下兼容性说明**
* API签名保持不变但异常类型发生变化
* 使用时需要捕获BaseException而非原来的RuntimeException等
* 建议升级时同步更新异常处理代码
---
#### version 1.5.5-jre11
**time 2025-9-23 23:10:00** <br/>
**branch** jre11 <br/>
**update** <br/>
1. 删除ApiVO新增ResponseVO,ObjectResponseVO,ListResponseVO用来处理返回参数
2. DateConsts 增加常量
3. **安全性增强**
* [AES](src/main/java/com/yexuejc/base/encrypt/AES.java) 移除硬编码密钥和IV增强参数验证修复建造者模式
* [StrUtil](src/main/java/com/yexuejc/base/util/StrUtil.java) 优化异常处理,避免敏感信息泄露
4. **性能优化**
* [StrUtil](src/main/java/com/yexuejc/base/util/StrUtil.java) 使用ThreadLocal缓存MessageDigest实例提升MD5/SHA计算性能
* [StrUtil](src/main/java/com/yexuejc/base/util/StrUtil.java) 使用SecureRandom替代Random提高安全性和线程安全性
5. **代码质量提升**
* [ObjUtil](src/main/java/com/yexuejc/base/util/ObjUtil.java) 修复空catch块问题统一异常处理优化反射字段访问
* 统一字符编码为UTF-8提高国际化支持
6. **统一异常处理机制**
* 所有src/main中的非[BaseException](src/main/java/com/yexuejc/base/exception/BaseException.java)异常均已替换为[BaseException](src/main/java/com/yexuejc/base/exception/BaseException.java)
* 支持多语言异常消息,全面支持国际化
* 在[ExpCode](src/main/java/com/yexuejc/base/constant/ExpCode.java)中新增异常常量FILE_NOT_EXIST、FILE_PARSE_FAILED、FILE_NOT_CSV_FORMAT、MD5_ALGORITHM_UNAVAILABLE、SHA256_ALGORITHM_UNAVAILABLE、INVALID_KEY_LENGTH
* 更新多语言资源文件msg_zh_CN.properties、msg_en_US.properties
* 修改文件:[FileUtil.java](src/main/java/com/yexuejc/base/util/FileUtil.java)、[StrUtil.java](src/main/java/com/yexuejc/base/util/StrUtil.java)、[ThreeDES.java](src/main/java/com/yexuejc/base/util/ThreeDES.java)、[ObjUtil.java](src/main/java/com/yexuejc/base/util/ObjUtil.java)
7. **测试覆盖率提升**
* 新增AESEnhancedTest包含11个测试用例验证安全性和功能
* 新增StrUtilEnhancedTest包含26个测试用例验证性能和线程安全性
* 新增ObjUtilEnhancedTest包含10个测试用例验证异常处理和功能
* 更新测试代码以适应新的异常处理机制
---
#### version 1.5.4-jre11
**time 2025-8-27 19:45:33** <br/>
**branch** jre11 <br/>
**update** <br/>
1. [AES](src/main/java/com/yexuejc/base/encrypt/AES.java) 优化枚举,优化异常
2.
2. [RSA](src/main/java/com/yexuejc/base/encrypt/RSA.java)
* 从静态修改为单例
* 变量命名优化
* 增加verifyByApi和signByApi针对通用API规范请求的签名验签
* 优化异常
3. [RSA2](src/main/java/com/yexuejc/base/encrypt/RSA2.java)
* 获取公私玥兼容PKCS1,PKCS8,PKCS12,JKS
* PKCS1,PKCS8兼容标准密钥和非标准密钥不带=====头)
* 优化异常
4. [BaseException](src/main/java/com/yexuejc/base/exception/BaseException.java) 增加异常统一处理,支持多语言配置
5. [MsgUtil](src/main/java/com/yexuejc/base/util/MsgUtil.java) 多语言消息获取处理,支持Java SPI配置和获取系统默认语言
---
#### version 1.5.3-jre11
**time 2025-4-27 16:37:29** <br/>
**branch** jre11 <br/>
**update** <br/>
1. [FileUtil](src/main/java/com/yexuejc/base/util/FileUtil.java) 增加读取大文件自定义方法和单纯读取方法
2. [JsonUtil](src/main/java/com/yexuejc/base/util/JsonUtil.java) 增加objToMap优化obj2Json
3. [DateUtil](src/main/java/com/yexuejc/base/util/DateUtil.java) 标准化日期时间的转换函数
4. [AES](src/main/java/com/yexuejc/base/encrypt/AES.java) 兼容ECB(虽然不再建议利用)
5. [StrUtil](src/main/java/com/yexuejc/base/util/StrUtil.java) 增加国家代码二进制相互转换
---
#### version 1.5.2-jre11
**time2024-4-7 14:34:33** <br/>
**branch** jre11 <br/>
**update** <br/>
1. 升级相关依赖
2. 依赖工具读取文件[FileInput.java](src/main/java/com/yexuejc/base/file/FileInput.java)从[FileUtil.java](src/main/java/com/yexuejc/base/util/FileUtil.java)中提取出来
3. 优化[FileUtil.java](src/main/java/com/yexuejc/base/util/FileUtil.java)
4. 优化[JwtUtil.java](src/main/java/com/yexuejc/base/util/JwtUtil.java)
---
#### version 1.5.1-jre11
**time2023-6-8 16:02:56** <br/>
**branch** jre11 <br/>
**update** <br/>
1. FileUtil 增加读取csv文件分页读取
提供读取IO流方法合集
2. 增加AES加解密
3. 增加文件压缩ZipUtil
4. DateUtilDateTimeUtil 时间操作工具优化
5. JsonUtil [feat] 增加json化时对LocalDateTime,LocalDate,Timestamp时间的优化,增加特殊场景序列化反序列化
---
#### version 1.5.0-jre8
**time2022-5-9 13:37:31** <br/>
**branch** master <br/>
**update** <br/>
1. 升级jwt相关包去除`io.jsonwebtoken:jjwt:0.9.1`(不再维护升级),
取而代之的是引入以下包,升级相关依赖
```
io.jsonwebtoken:jjwt-api:0.11.5
io.jsonwebtoken:jjwt-impl:0.11.5
io.jsonwebtoken:jjwt-jackson:0.11.5
org.bouncycastle:bcprov-jdk15on:1.70
```
2. 升级
```
jakarta.validation:jakarta.validation-api:3.0.1
org.apache.poi:poi:5.2.2
com.google.guava:guava:31.1-jre
commons-io:commons-io:2.11.0
```
4. 去除依赖
```
<commons-codec.version>1.15</commons-codec.version>
<!--base64使用到的依赖-->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>${commons-codec.version}</version>
<scope>compile</scope>
</dependency>
```
---
#### version 1.4.5
**time2022-5-9 13:37:31** <br/>
**branch** master <br/>
**update** <br/>
>1. 扩展FileUtil,优化Base64的包
---
#### version 1.4.4
**time2021-4-24 00:41:31** <br/>
**branch** master <br/>
**update** <br/>
>1. JsonUtil类修复格式化出现的时区差现使用TimeZone.getDefault()时区
---
#### version 1.4.3
**time2021-2-6 11:42:49** <br/>
**branch** master <br/>
**update** <br/>
>1. DateTimeUtil类增加时间格式
---
#### version 1.4.2
**time2021-2-3 11:40:11** <br/>
**branch** master <br/>
**update** <br/>
>1. 优化时间转换格式
>2. 增加注解 ToUeProperty 转换时间为时间戳的功能
---
#### version 1.4.1
**time2021-1-31 12:59:24** <br/>
**branch** master <br/>
**update** <br/>
>1. 升级所有依赖
>1. 增加DateTimeUtil类的功能
---
#### version 1.4.0
**time2020-5-18 12:06:14** <br/>
**branch** master <br/>
**update** <br/>
>1. 更新仓库地址 https://nexus.yexuejc.club/ 为 https://nexus.yexuejc.top/
>2. 优化Execl 和 Jwt 工具
---
#### version 1.3.9
**time2019-1-11 16:50:51** <br/>
**branch** master <br/>
**update** <br/>
>1. RSA2 增加证书格式转换 JKS(xx.keystore) 、 PKCS12(xx.pfx)相互转换
---
#### version 1.3.8
**time2019-1-11 13:28:12** <br/>
**branch** master <br/>
**update** <br/>
>1. [ToUeProperty](src/main/java/com/yexuejc/base/util/ToUeProperty.java) 增加 ignore
---
#### version 1.3.7
**time2019-1-11 10:02:03** <br/>
**branch** master <br/>
**update** <br/>
>1. 考虑到向下兼容回滚1.3.6【json增加下划线、驼峰互转】,考虑更优方案(解决加入下个版本)
---
#### version 1.3.6
**time2019-1-10 14:55:13** <br/>
**branch** master <br/>
**update** <br/>
>1. json增加下划线、驼峰互转
---
#### version 1.3.5
**time2019-1-7 17:19:22** <br/>
**branch** master <br/>
**update** <br/>
>1. objUtil 增加兼容类型
---
#### version 1.3.4
**time2019-1-2 20:32:12** <br/>
**branch** master <br/>
**update** <br/>
>1. objUtil list类型修复
---
#### version 1.3.3
**time2019-1-2 14:06:47** <br/>
**branch** master <br/>
**update** <br/>
>1. MoneyUtil 扩展元转分
---
#### version 1.3.2
**time2019-1-2 14:06:47** <br/>
**branch** master <br/>
**update** <br/>
>1. objUtil 枚举类型修复
---
#### version 1.3.1
**time2019-1-2 14:06:47** <br/>
**branch** master <br/>
**update** <br/>
>1. objUtil 增加类字段(驼峰)转换成下划线
---
#### version 1.3.0
**time2018-12-30 16:47:50** <br/>
**branch** master <br/>
**update** <br/>
>1. 移交发布到maven中央仓库
>2. 移交后变更groupId 为`top.yexuejc`
>3. 源码发布由`成都极致思维网络科技有限公司`维护github开源地址不变gitee从组织[ICC(InCloudCode)](https://gitee.com/incloudcode)转移到[成都极致思维网络科技有限公司/yexuejc-base](https://gitee.com/jzsw-it/yexuejc-base)
---
#### version 1.2.9
**time2018-12-29 14:51:33** <br/>
**branch** master <br/>
**update** <br/>
>1. 获取RSA密钥增加以输入流的形式获取密钥
---
#### version 1.2.6
**time2018-12-21 14:58:49** <br/>
**branch** master <br/>
**update** <br/>
>1. RSA 验签增加初始化方法
---
#### version 1.2.8
**time2018-12-28 20:10:14** <br/>
**branch** master <br/>
**update** <br/>
>1. 新增[ObjUtil](src/main/java/com/yexuejc/base/util/ObjUtil.java) 对类(对象)进行处理,提供深度克隆
---
#### version 1.2.6
**time2018-12-21 14:58:49** <br/>
**branch** master <br/>
**update** <br/>
>1. RSA 验签增加初始化方法
---
#### version 1.2.7
**time2018-12-24 15:31:01** <br/>
**branch** master <br/>
**update** <br/>
>1. FileUtil增加base64转File `base64ToFile()`
---
#### version 1.2.6
**time2018-12-21 14:58:49** <br/>
**branch** master <br/>
**update** <br/>
>1. RSA 验签增加初始化方法
---
#### version 1.2.5
**time2018-12-20 13:13:23** <br/>
**branch** master <br/>
**update** <br/>
>1. 丰富[JsonUtil](src/main/java/com/yexuejc/base/util/JsonUtil.java),支持直接对Map泛型转换
---
#### version 1.2.4
**time2018-11-27 14:46:04** <br/>
**branch** master <br/>
**update** <br/>
>1. 工具类的优化
>2.规范代码
---
#### version 1.2.3
**time2018-11-23 16:45:42** <br/>
**branch** master <br/>
**update** <br/>
>1. 修复RSA加密签名时选择的Base64encodeBase64URLSafeString、encodeBase64String区分
---
#### version 1.2.1
**time2018-11-9 15:05:06** <br/>
**branch** master <br/>
**update** <br/>
>1. 优化resps
---
#### version 1.2.2
**time2018-11-20 20:20:12** <br/>
**branch** master <br/>
**update** <br/>
>1. 优化RSA 加解密
>1. 增加RSA 签名
---
#### version 1.2.1
**time2018-11-9 15:05:06** <br/>
**branch** master <br/>
**update** <br/>
>1. 优化resps
---
#### version 1.2.0
**time2018-10-19 11:38:20** <br/>
**branch** master <br/>
**update** <br/>
>1. 增加异步线程处理工具
```$java
SysUtil.threadRun(() -> {
//异步执行代码块
}
```
---
#### version 1.1.9
**time2018-9-23 11:57:36** <br/>
**branch** master <br/>
**update** <br/>
>1. 优化工具类包名:不向下兼容,升级请修改
>2. 升级JWT工具类更改为单例模式可配置参数
---
#### version 1.1.8
**time2018-9-3 19:29:56** <br/>
**branch** master <br/>
**update** <br/>
>1. 增肌图片处理工具类
>2. 增肌3des工具类
>3. 增肌RSA工具类
>4. 优化其他工具类
---
#### version 1.1.7
**time2018-8-17 11:22:50** <br/>
**branch** master <br/>
**update** <br/>
>1. 优化ApiVO
---
#### version 1.1.6
**time2018-7-7 11:32:56** <br/>
**branch** master <br/>
**update** <br/>
>1. maven仓库更新
---
#### version 1.1.5
**time2018-6-19 22:16:34** <br/>
**branch** master <br/>
**update** <br/>
>1. 优化ApiVO
---
#### version 1.1.4
**time2018-6-14 22:27:59** <br/>
**branch** master <br/>
**update** <br/>
>1. 统一编码UTF-8
---
#### version 1.1.3
**time2018年6月2日12:16:58** <br/>
**branch** master <br/>
**update** <br/>
>1. 修改正则RegexUtils.java
>2. 修改正则StrUtil.java->扩展genUUID()
---
#### version 1.1.2
**time** 2018-5-16 15:03:28<br/>
**branch** master <br/>
**update** <br/>
>1. 修改依赖
---
#### version 1.1.1
**time** 2018-5-12 22:25:05<br/>
**branch** master <br/>
**update** <br/>
>1. 添加RSA
---
##### version 1.1.0
**time** 2018-5-12 22:25:05<br/>
**branch** master <br/>
**update** <br/>
>1. 添加支持加密功能
---
#### version 1.0.0
**time** 2018-1-31 12:16:10<br/>
**branch** master <br/>
**update** <br/>
>1. 基于java8开发的web应用工具包