2013-10-09 32 views
2

我的壓縮文件已加密,需要解密並解壓縮文件。以字節爲單位解壓縮加密文件

我並不是一次解密完整文件,而是將其存儲在磁盤中並解壓縮,因爲它不是解壓縮加密文件的最佳方式。

我解密了一些字節,只想解壓縮從解密器中收到的數據(內存緩衝區)的字節並解壓縮它們。

使用minizip我們不能從內存解壓縮緩衝區數據。我使用Zlib Inflate()?在這種情況下會起作用嗎?

如果使用minizip做任何其他的方式,請回復。

+0

爲什麼不是「解密加密文件的最佳方式」? – fvdalcin

回答

0

如果您正在討論從存儲在內存中的緩衝區中解壓zip文件,該緩衝區包含zip文件的內容,那麼它肯定是您可以使用minizip做的事情。如果你看看minizip,它有一個IO API從內存中加載zip文件,以便你可以解壓縮它們。

zlib_filefunc_def FileFunctions32 = {0}; 
ourmemory_t *FileMemory = {0}; 

// Fill out ourmemory_t instance with buffer pointer (base) and length (size) 

fill_memory_filefunc(&FileFunctions32, FileMemory); 
UnzipFileHandle = unzOpen2("__notused__", &FileFunctions32); 

有多種方式可以處理它的加密/解密方面。如果加密例程是zip規範的一部分,那麼找到一個可以開箱即用的庫。如果加密是在整個zip文件緩衝區完成的,那麼您可以簡單地解密緩衝區,然後將其傳遞給minizip的unzOpen2函數。另一種選擇可能是編寫自己的加密/解密IO API層以用於minizip,如果上述方案都不符合您的要求。