You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中实现带AES 256加密的7z压缩并兼容7zip?

兼容7zip的AES-256加密7z压缩实现

你不需要手动实现独立的AES加密逻辑——Apache Commons Compress的SevenZOutputFile已经内置了符合7z格式规范的加密支持,直接用它就能生成Windows端7zip可识别解密的加密归档文件。之前的问题出在你尝试单独对文件内容做AES加密,而非遵循7z格式本身的加密规则。

以下是修改后的完整可运行代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry;
import org.apache.commons.compress.archivers.sevenz.SevenZMethod;
import org.apache.commons.compress.archivers.sevenz.SevenZMethodConfiguration;
import org.apache.commons.compress.archivers.sevenz.SevenZOutputFile;

public class LZMACompressionExample {
    
    public static void main(String[] args) throws IOException {
        String inputFilePath = "D:\\f\\test.txt";
        String outputFilePath = "D:\\c\\test.7z";
        String password = "your-secure-password"; // 替换为你的目标密码

        // 初始化7z输出文件并配置AES-256加密
        SevenZOutputFile sevenZOutput = new SevenZOutputFile(new File(outputFilePath));
        // 指定加密算法为AES-256,传入密码字符数组
        sevenZOutput.setContentEncryption(new SevenZMethodConfiguration(SevenZMethod.AES_256, password.toCharArray()));

        // 创建归档条目,保留原文件名
        SevenZArchiveEntry entry = sevenZOutput.createArchiveEntry(new File(inputFilePath), new File(inputFilePath).getName());
        sevenZOutput.putArchiveEntry(entry);

        // 读取原文件内容并写入归档
        try (FileInputStream fis = new FileInputStream(inputFilePath)) {
            byte[] buffer = new byte[1024];
            int readLen;
            while ((readLen = fis.read(buffer)) > 0) {
                sevenZOutput.write(buffer, 0, readLen);
            }
        }

        // 关闭资源
        sevenZOutput.closeArchiveEntry();
        sevenZOutput.close();

        System.out.println("带AES-256加密的7z文件已生成,可通过7zip输入密码正常解压");
    }
}

核心注意事项:

  • 加密配置逻辑:通过setContentEncryption()方法传入SevenZMethod.AES_256和密码,这是完全贴合7z格式加密规范的实现,生成的文件100%兼容Windows端7zip。
  • 版本要求:确保使用的Apache Commons Compress版本不低于1.21(更早版本对AES-256的支持存在兼容性问题),推荐使用最新稳定版。
  • 禁止手动加密:不要单独对文件内容做AES加密后再打包,这种方式生成的文件不符合7z的加密结构,7zip无法识别其解密规则。

内容的提问来源于stack exchange,提问作者GouthamRio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 16:52:44