我正在尝试找到适合美国联邦政府使用的带有加密的 zip 压缩和加密组件,所以我不能使用 Zip 2.0 加密,它必须是 AES 或类似的。我已经找到了SharpZipLib(不能进行 AES 加密)和Chilkat(可以进行 AES 加密,但要花钱)。我错过了任何其他选择吗?
5 回答
您愿意为 DotNetZip 中的 AES 支付多少费用?;)
DotNetZip 支持 AES 加密,具有 128 位或 256 位密钥。
http://www.codeplex.com/DotNetZip
示例代码:
using (ZipFile zip = new ZipFile())
{
zip.AddFile("ReadMe.txt"); // no password for this entry
// use a password for subsequent entries
zip.Password= "This.Encryption.is.FIPS.197.Compliant!";
zip.Encryption= EncryptionAlgorithm.WinZipAes256;
zip.AddFile("Rawdata-2008-12-18.csv");
zip.Save("Backup-AES-Encrypted.zip");
}
DotNetZip 生成的 AES 加密 zip 文件可以被 WinZip 读取和提取,反之亦然。
您也可以只创建没有加密的常规 zip 文件。
哦,它是免费的。
如果钱是个大问题,你可以使用像http://www.codeplex.com/DotNetZip这样的开源库,它现在支持 AES
7-Zip呢?它在 LGPL 下是开源的(因此应该可以在您的项目中使用),并且根据规范它支持带有 AES 加密的 ZIP。
查看有关Stream Pipeline的这篇很棒的文章。它不仅定义了一种以多线程方式将流相互链接的酷方法,使用的示例是压缩后加密。
您可以使用 #ZipLib ( https://icsharpcode.github.io/SharpZipLib/ ),它是 DotNetZipLib 的轻量级替代品。
它提供了 FastZip 类,可将使用 AES 加密的 HDD 上的文件夹压缩减少到 2-3 行代码。
请参阅 wiki 以供参考: https ://github.com/icharpcode/SharpZipLib/wiki/FastZip
如果您需要更多功能,#ZipLib 会比 DotNetZipLib 复杂一点,但在我的情况下,后者会创建损坏的 ZIP 文件,所以我还是使用 SharpZipLib。