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

如何通过Rebex.IO实现ZIP文件整体密码保护(禁止无密码查看文件列表)

问题分析与解决思路

首先要明确:你使用的Zip20(ZipCrypto)加密算法本身的设计就是仅加密文件内容,不会加密ZIP包的文件列表(文件名、目录结构等元数据),这是该算法的固有特性,也是Windows原生ZIP加密采用的标准——所以仅靠Zip20无法实现“禁止无密码查看文件列表”的需求。

而AES系列加密算法虽然支持加密文件元数据,但Windows原生ZIP工具对其支持有限,无法通过原生弹窗解密,这确实不符合你的客户需求。

可行的折中方案

如果必须兼顾“Windows原生弹窗解密”和“隐藏文件列表”,可以采用以下折中方法:

  • 先将需要加密的所有文件/目录打包成一个单一文件(比如临时tar包)
  • 再用Zip20算法对这个单一文件进行加密

这样,无密码打开ZIP包时,只能看到一个加密的文件条目,无法知晓内部的具体文件列表;输入正确密码解压后,才能得到打包文件,进而查看其中的内容。

示例代码(基于Rebex)

// 1. 将目标内容打包为临时文件(以目录为例,可根据需求调整为单个/多个文件)
string tempPackedFile = Path.GetTempFileName();
using (var tarArchive = new TarArchive(tempPackedFile, ArchiveOpenMode.CreateNew))
{
    tarArchive.Add(@"C:\Your\Target\Files"); // 添加需要加密的原始内容
}

// 2. 用Zip20加密这个临时打包文件
using (var zipArchive = new ZipArchive("final_encrypted.zip", ArchiveOpenMode.CreateNew))
{
    zipArchive.Password = "your-secure-password";
    zipArchive.EncryptionAlgorithm = EncryptionAlgorithm.Zip20;
    zipArchive.Add(tempPackedFile, "packed_content.tar"); // 重命名条目便于识别
}

// 3. 清理临时文件
File.Delete(tempPackedFile);

补充说明

这种方案通过“单一加密条目”间接隐藏原始文件列表,同时保留Windows原生ZIP工具的弹窗解密支持。如果仅需加密单个文件,直接加密即可;若涉及多文件/目录,打包后再加密是目前唯一能满足需求的途径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 23:42:28