2

私の圧縮ファイルは暗号化されており、ファイルを復号化して解凍する必要があります。

暗号化ファイルを解凍する最適な方法ではないため、一度に完全なファイルを復号化し、ディスクに保存して解凍することはしません。

私はいくつかのバイトを復号化しており、デクリプタから受け取ったデータのバイト (メモリ バッファ) のみを解凍し、それらを解凍したいと考えています。

minizip を使用すると、メモリからバッファ データを解凍できません。Zlib Inflate() を使用できますか? この場合、それは機能しますか?

minizip を使用してそれを行う他の方法があれば返信してください。

4

1 に答える 1

0

zip ファイルのコンテンツを含むメモリに格納されたバッファーから zip ファイルを解凍することについて話している場合、それは確かに minizip で実行できることです。minizip を見ると、メモリから zip ファイルをロードして解凍するためのIO APIがあります。

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関数に渡す前に、その場で単純に復号化できます。上記のシナリオのいずれも探しているものではない場合、別のオプションとして、minizip 用の独自の暗号化/復号化 IO API レイヤーを作成することもできます。

于 2013-10-24T06:32:48.343 に答える