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

使用 Crypto++ 的十六进制编码器和解码器

2000年11月21日

CPOL
viewsIcon

120553

使用 Crypto++ 库将二进制数据编码为十六进制格式以及从十六进制格式解码。

引言

Crypto++ 库是由 魏戴编写的一个免费的密码方案库。然而,该库还包含其他有用的类,这些类在使用该库时并不立即显现。其中两个是 HexEncoderHexDecoder 类,可用于(令人惊讶的是)将数据编码和解码为十六进制文本格式,例如 0-9、A-F。

编码

编码非常简单,假设我们有一些长度为 dwLen 的数据 pData,我们希望将其编码并存储在长度为 dwLen*2 的 pData2 中,那么

#include <hex.h> // from crypto++ library 
HexEncoder hexEncoder;
hexEncoder.Put(pData,dwLen);
hexEncoder.Close();
hexEncoder.Get(pData2,dwLen*2);

就这样。也可以将多个数据块添加到编码器的流中,即:

HexEncoder hexEncoder;
hexEncoder.Put(pDataA,dwLenA);
hexEncoder.Put(pDataB,dwLenB);
hexEncoder.Put(pDataC,dwLenC);
hexEncoder.Close();
hexEncoder.Get(pData2,(dwLenA+dwLenB+dwLenC)*2);

解码

解码同样简单。

HexDecoder hexDecoder;
hexDecoder.Put(pData,dwLen);
hexDecoder.Close();
hexDecoder.Get(pData2,dwLen/2); 

备注

感谢魏戴允许我撰写这篇文章,希望这是一系列关于使用他的 Crypto++ 库的文章。

© . All rights reserved.