採用ZLIB及MINIZIP進行檔案解壓縮及加解密

2021-09-01 02:36:33 字數 1641 閱讀 3560

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

zlib開源庫採用的是deflate壓縮演算法,已經不支援加密功能,實際上功能還存在於**中,採用minizip可以支援對zip檔案的加解密。

zlib目前最新的是1.

2 .7,minizip最新的版本是1.1。

採用zlib可以解壓縮任何zip檔案,也可以壓縮成zip檔案被winzip/winrar/7z等工具開啟。

注意:如果採用了加密功能,zlib加密的檔案只能被zlib解開,winrar/winzip打不開,7z可以開啟,但其它工具加密的zip檔案zlib可以開啟,令人費解,

長期不支援加密失去維護造成的。

注:已經確認呼叫

zipopennewfileinzip4前需要用

crc32函式計算檔案crc值,當做引數傳入函式即可,具體**參照minizip.c檔案。

採用minizip進行檔案壓縮:

如果要支援加密,需要遮蔽unzip.c中的nouncrypt巨集定義。

建立壓縮流

zipfile zf=

null

;zf = zipopen64(zipfile,

0 );

壓縮檔案

zip_fileinfo fileinfo; 

zeromemory(&fileinfo, 

sizeof

(fileinfo));               

zipopennewfileinzip4(zf,buf, &fileinfo, 

null

,  0

,  null

,  0

,  null

, z_deflated,level,

0 , -max_wbits, def_mem_level, 

z_default_strategy,password, 

0 , 

0 , zip_gpbf_language_encoding_flag);

注意buf為檔名,password為空時需要給null,level為壓縮比,9為最高,0最低。

寫入壓縮檔案

zipwriteinfileinzip(zf,data,size)

關閉當前檔案

zipclosefileinzip(zf);

關閉流zipclose(zf,

0 );

採用minizip進行檔案解壓縮:

unzfile uf=

null

;unz_global_info64 gi;

unz_file_info64 fileinfo;  

開啟zip檔案

uf = unzopen64(szzipfile);

result=unzgetglobalinfo64(uf, &gi); if

(result != unz_ok)          

throw

「檔案錯誤」;

迴圈解壓縮檔案

for (

inti=

0 ;i

給我老師的人工智慧教程打call!

windows環境下編譯zlib及使用

系統 win10 x64 ide vs2017 此時版本 zlib 1.2.11.zip 2.解壓 3.進入 contrib vstudio 子目錄,找到對應版本的vs開啟,然後編譯 備註 1 如果編譯過程中出現 fatal error lnk1281 無法生成 safeseh 映像 的錯誤,則將該...

Linux環境上zlib1 2 8安裝及配置

zlib是提供 資料壓縮 用的函式庫,由jean loup gailly與mark adler所開發,初版0.9版在1995年5月1日發表。zlib使用deflate演算法,最初是為libpng函式庫所寫的,後來普遍為許多軟體所使用。此函式庫為自由軟體,使用zlib授權。截至2007年3月,zlib...

python2 7及後面缺少zlib包解決辦法

python 缺少zlib 解決辦法 如何安裝python我這裡就不贅述了,一般linux系統會自帶乙個python,不過一般版本不會太高,需要安裝最高版本的,推薦有gcc模式 去安裝 一 先去 zlib 原始碼檔案,如 二 安裝 zlib tar xzvf zlib 1.2.8.tar.gz cd...