我需要能够从 Windows 上的一些 C/C++ 代码中解压缩一些 AES (WinZip) 加密的 zip 文件。有没有人有办法做到这一点?我希望有一些合适的代码或我可以使用的 DLL(带有示例用法)。到目前为止,我的搜索被证明是徒劳的。
常用的 InfoZip 库不支持 AES 加密。
我目前最好的解决方案是从我的程序中调用 7z.exe 命令行程序,但考虑到我将解压缩 100 个左右的文件,这不太理想。
这是对加密和解密的 AES 支持的 minizip zlib 贡献。 https://github.com/nmoinvaz/minizip
DotNetZip可以做到。如果您不反对使用托管 C++。
来自DotNetZip 文档,这是创建AES 加密 zip 文件的代码。(提取的代码类似)。
#include "stdafx.h"
using namespace System;
using namespace Ionic::Zip;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");
ZipFile ^ zip;
try
{
zip = gcnew ZipFile();
zip->Password = "Harbinger";
zip->Encryption = EncryptionAlgorithm::WinZipAes128;
zip->AddEntry("Readme.txt", "This is the content for the Readme.txt entry.");
zip->Save("test.zip");
}
finally
{
zip->~ZipFile();
}
Console::WriteLine(L"Press <ENTER> to quit.");
Console::ReadLine();
return 0;
}
另外 - 我写了 DotNetZip,所以我对它有一定的偏爱!但我看不出执行 7z.exe 100 次有什么问题?你关心性能吗?