65.9K
CodeProject 正在变化。 阅读更多。
Home

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

2000 年 11 月 21 日

CPOL
viewsIcon

244627

downloadIcon

2512

使用 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++ 库的文章。

最新版本

Crypto++ 库的最新版本可以在 这里 找到。
© . All rights reserved.