我正在尝试使用encryption suitable for use by the US Federal Government找到zip压缩和加密组件,因此我无法使用Zip 2.0加密,它必须是AES等。我已经找到了SharpZipLib(无法进行AES加密)和Chilkat(可以进行AES加密,但要花钱)。我错过了其他任何选择吗?
答案 0 :(得分:11)
您愿意为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文件。
哦,它是免费的。
答案 1 :(得分:6)
如果钱是一个大问题,你可以选择像http://www.codeplex.com/DotNetZip这样的开源库,它现在有AES支持
答案 2 :(得分:6)
7-Zip怎么样?它是LGPL下的开源软件(因此应该可以在您的项目中使用),并且根据规范,它支持使用AES加密的ZIP。
答案 3 :(得分:1)
查看Stream Pipeline上的这篇精彩文章。它不仅定义了一种以多线程方式将流相互链接的酷方法,使用的示例是压缩,然后是加密。
答案 4 :(得分:1)
您可以使用#ZipLib(https://icsharpcode.github.io/SharpZipLib/),它是DotNetZipLib的轻量级替代品。
它提供了FastZip类,它可以将使用AES加密的HDD上的文件夹压缩到2-3行代码。
请参阅wiki以供参考: https://github.com/icsharpcode/SharpZipLib/wiki/FastZip
如果您需要更多功能,#ZipLib比DotNetZipLib更复杂,但后者在我的情况下创建了损坏的ZIP文件,所以我仍然使用SharpZipLib。