以编程方式在Windows上解压缩AES加密的zip文件

时间:2010-09-17 06:40:29

标签: c++ c windows aes unzip

我需要能够从Windows上的某些C / C ++代码中解压缩一些AES(WinZip)加密的zip文件。有没有人有办法做到这一点?我希望能够使用一些适当的代码或DLL(使用示例)。到目前为止,我的搜索结果毫无结果。

常用的InfoZip库不支持AES加密。

我目前最好的解决方案是从我的程序调用7z.exe命令行程序,但考虑到我将解压缩100个文件,这不太理想。

3 个答案:

答案 0 :(得分:5)

这是minizip zlib贡献,AES支持加密和解密。 https://github.com/nmoinvaz/minizip

答案 1 :(得分:0)

DotNetZip可以做到。如果您不反对使用托管C ++。

DotNetZip documentation,这是创建 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,所以我对它有一定的偏袒!但是我没有看到exec'ing 7z.exe 100次出错了什么?你关注性能吗?

答案 2 :(得分:0)