使用 Crypto++ 库进行压缩和解压缩






4.57/5 (8投票s)
使用 Crypto++ 库压缩和解压缩数据
引言
Crypto++ 库是由 魏戴 (Wei Dai) 编写的一个免费的密码方案库。然而,该库还包含其他有用的类,这些类在使用该库时并不立即显现。其中两个是 Gzip 和 Gunzip 类,可用于压缩和解压缩(zip 和 unzip)数据。
压缩
压缩数据再简单不过了。假设您有大小为 dwLen 的数据 pData,您希望对其进行压缩。
#include <gzip.h> Gzip zipper(1); // 1 is fast, 9 is slow zipper.Put(pData,dwLen); zipper.Close(); byte* pCompressed = new byte[zipper.MaxRetrieveable()]; zipper.Get(pCompressed,zipper.MaxRetrieveable());
pCompressed 现在包含压缩后的数据。
解压缩
您可能不会惊讶地发现,解压缩同样容易。(dwLen 现在是压缩数据的长度)
Gunzip unzipper;
unzipper.Put(pCompressedData,dwLen);
unzipper.Close();
byte* pData = new byte[unzipper.MaxRetrieveable()];
unzipper.Get(pData,unzipper.MaxRetrieveable());
pData 现在包含未压缩的数据。
备注
感谢魏戴 (Wei Dai) 允许我撰写这篇文章,希望这是一系列关于使用他的 Crypto++ 库的文章。