From e3263fc56e223256f24b13604a71b22203746ba1 Mon Sep 17 00:00:00 2001 From: database-mysql Date: Wed, 12 Aug 2026 03:58:18 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=88=E6=9C=AC=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 84 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index a9726bd..f68c871 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # GNU Java Utils Library -一个轻量级 Java 工具库,提供压缩/解压、终端彩色输出、随机数生成、硬件标识等功能。 +一个轻量级 Java 工具库,提供压缩/解压、终端彩色输出、文件创建与管理、文件加密/解密、随机数生成、硬件标识等功能。 > 注:此项目/仓库已同步到 Github:[https://github.com/databasemysql233-debug/gnu_java_utils_library.git](https://github.com/databasemysql233-debug/gnu_java_utils_library.git) > 原项目/仓库链接:[https://git.opensource-studio.info/database-mysql/gnu_java_utils_library.git](https://git.opensource-studio.info/database-mysql/gnu_java_utils_library.git) @@ -21,6 +21,9 @@ src/main/java/top/gtb520/java/gnu/java/utils/library/ └── utils/ ├── compress/ │ └── compress.java # 压缩/解压工具类 + ├── file/ + │ ├── CreateFile.java # 文件创建/保存工具类 + │ └── EncryptionAndDecryption.java # 文件加密/解密工具类 ├── print/ │ ├── echo.java # 终端彩色输出工具类 │ └── ColorNameEnum.java # 颜色名称枚举 @@ -190,7 +193,80 @@ main.echo.ColorHexPrintln("自定义颜色", "#FF0000"); main.echo.ColorPrintlnPlus("&a多色 &c文本"); ``` -### 3. 随机生成器 (`random`) +### 3. 文件创建与保存 (`file/CreateFile`) + +支持创建普通/二进制文件,以及异步字节流文件保存。 + +| 方法 | 说明 | 参数 | +|-------------------------------------------------------|---------------------------------------|-------------------------------------------------------------| +| `CreateFile.NewFile(FileName, isBin, binFileType)` | 创建空白文件,二进制文件自动写入文件头 | `FileName` 文件名,`isBin` 是否二进制,`binFileType` 二进制类型(普通文件传 `null`) | +| `CreateFile.StreamSaveFile(file, TargePath, FileName)` | 以字节流方式异步保存文件到目标路径 | `file` 源文件,`TargePath` 目标目录,`FileName` 保存的文件名 | + +**二进制文件类型 (`BinFileType`):** + +| 枚举值 | 文件头标识 | +|-------|----------------| +| `ELF` | `7F 45 4C 46` | +| `PE` | `4D 5A` | + +```java +import top.gtb520.java.gnu.java.utils.library.utils.file.CreateFile; +import top.gtb520.java.gnu.java.utils.library.utils.file.CreateFile.BinFileType; +import java.io.File; +import java.nio.file.Path; + +// 创建普通空白文件 +File plainFile = CreateFile.NewFile("/path/to/file.txt", false, null); + +// 创建 ELF 二进制文件(自动写入 ELF 文件头) +File elfFile = CreateFile.NewFile("/path/to/program", true, BinFileType.ELF); + +// 创建 PE 二进制文件(自动写入 MZ 文件头) +File peFile = CreateFile.NewFile("/path/to/app.exe", true, BinFileType.PE); + +// 异步字节流保存文件 +boolean success = CreateFile.StreamSaveFile(sourceFile, Path.of("/path/to/dest"), "output.bin"); +``` + +### 4. 文件加密/解密 (`file/EncryptionAndDecryption`) + +支持 **AES**、**DES** 对称加密,加密后覆盖原文件,密钥单独保存到指定目录。解密时从密钥文件读取密钥,解密后覆盖还原原文件。 + +| 方法 | 说明 | 参数 | +|----------------------------------------------------------------|--------------------------|-----------------------------------------------| +| `EncryptionAndDecryption.EncryptionFile(file, type, keyPath)` | 异步加密文件,覆盖原文件,密钥保存到 keyPath | `file` 文件,`type` 加密类型,`keyPath` 密钥目录路径 | +| `EncryptionAndDecryption.DecryptionFile(file, type, keyfile)` | 异步解密文件,覆盖还原原文件 | `file` 加密文件,`type` 加密类型,`keyfile` 密钥文件 | + +**加密类型 (`EncryptionType`):** + +| 枚举值 | 算法 | 密钥长度 | +|-------|---------------------|---------| +| `AES` | AES/ECB/PKCS5Padding | 128 bit | +| `DES` | DES/ECB/PKCS5Padding | 56 bit | +| `RSA` | AES(对称替代) | 128 bit | + +> 加密后密钥文件命名为 `原文件名.key`,保存在 `keyPath` 目录下。 +> 加密/解密均覆盖写回原文件,不添加额外后缀。 + +```java +import top.gtb520.java.gnu.java.utils.library.utils.file.EncryptionAndDecryption; +import top.gtb520.java.gnu.java.utils.library.utils.file.EncryptionAndDecryption.EncryptionType; +import java.io.File; +import java.nio.file.Path; +import java.nio.file.Files; + +File file = new File("/path/to/data.txt"); +Path keyDir = Path.of("/path/to/keys"); + +// 加密文件(密钥保存到 keyDir/data.txt.key) +File encrypted = EncryptionAndDecryption.EncryptionFile(file, EncryptionType.AES, keyDir); + +// 解密文件(从密钥文件读取密钥) +File keyFile = keyDir.resolve("data.txt.key").toFile(); +File decrypted = EncryptionAndDecryption.DecryptionFile(file, EncryptionType.AES, keyFile); +``` + +### 5. 随机生成器 (`random`) | 方法 | 说明 | 参数 | |---------------------------------------------|--------------|------------------------------| @@ -204,7 +280,7 @@ int num = defaults.random(1, 100); // 生成 1~100 的随机整数 String str = defaults.randomString(16); // 生成 16 位随机字符串(大小写字母+数字) ``` -### 4. 硬件标识生成器 (`hwid`) +### 6. 硬件标识生成器 (`hwid`) 组合 CPU、主板、MAC 地址、硬盘序列号等信息,通过 SHA-256 生成唯一的硬件标识符(HWID)。支持 Windows、macOS、Linux 及 Android 平台。 @@ -219,7 +295,7 @@ String hwid = getHWID.generateHWID(); System.out.println("HWID: " + hwid); ``` -### 5. 版本信息 (`version`) +### 7. 版本信息 (`version`) 提供项目版本信息及编译时 Java/OpenJDK 版本常量。 @@ -248,7 +324,7 @@ main.version.getOpenJDKRuntimeEnvironment(); // OpenJDK 运行时环境 main.version.getOpenJDK64BitServerVM(); // OpenJDK 64-Bit Server VM ``` -### 6. 运行时信息 (`runtime`) +### 8. 运行时信息 (`runtime`) 获取当前 Java 运行时环境信息,包括 JAR 路径、JVM 版本、位数等。 @@ -316,7 +392,7 @@ mvn package ## 使用 -编译成功后,将 `target/gnu-java-utils-library-1.3-SNAPSHOT.jar` 放入项目依赖中,或在 Releases 中下载最新版 JAR 包。 +编译成功后,将 `target/gnu-java-utils-library-1.4-SNAPSHOT.jar` 放入项目依赖中,或在 Releases 中下载最新版 JAR 包。 **pom.xml 引入本地依赖:** @@ -325,9 +401,9 @@ mvn package top.gtb520.java.gnu gnu_java_utils_library - 1.3-SNAPSHOT + 1.4-SNAPSHOT system - ${project.basedir}/lib/gnu_java_utils_library-1.3-SNAPSHOT.jar + ${project.basedir}/lib/gnu_java_utils_library-1.4-SNAPSHOT.jar ```