Windowsの圧縮フォルダはZipcryptoという暗号化方式を利用しているらしいが、LIBZIPで指定できるのはRES-128等で、Windows標準に対応できない(圧縮フォルダを解凍できない)(らしい)。
従って動作を確認するには他のフリーソフトなどを使う必要がある。Lhaplusではとりあえず読み込めた。
※本当は展開もやるつもりだった(本当だ)のだけれどこの事実に気づくのに半日かかって気力が尽きたのでとりあえず圧縮だけやる。
#include <zip.h> #include <iostream> #pragma comment(lib,"zip.lib") //ファイルを圧縮 int main(int argc, char* argv[]) { int errorp; zip_t* zipper = zip_open(R"(C:\test\out.zip)", ZIP_CREATE | ZIP_EXCL, &errorp); // パスワードの定義 const char* thePassWord = "j6KY4cwC"; zip_source_t* source; zip_int64_t iIndex; source = zip_source_file(zipper, R"(C:\test\data\snail1.png)", 0, 0); iIndex = zip_file_add(zipper, R"(snail1.png)", source, ZIP_FL_ENC_RAW); zip_file_set_encryption(zipper, iIndex, ZIP_EM_AES_128, thePassWord);//パスワードを指定 source = zip_source_file(zipper, R"(C:\test\data\snail2.png)", 0, 0); iIndex = zip_file_add(zipper, R"(snail2.png)", source, ZIP_FL_ENC_RAW); zip_file_set_encryption(zipper, iIndex, ZIP_EM_AES_128, thePassWord);//パスワードを指定 source = zip_source_file(zipper, R"(C:\test\data\snail5.png)", 0, 0); iIndex = zip_file_add(zipper, R"(snail5.png)", source, ZIP_FL_ENC_RAW); zip_file_set_encryption(zipper, iIndex, ZIP_EM_AES_128, thePassWord);//パスワードを指定 zip_close(zipper); int i; std::cin >> i; return 0; }