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






3.31/5 (8投票s)
使用 Crypto++ 库将二进制数据编码为十六进制格式以及从十六进制格式解码。
引言
Crypto++ 库是由 魏戴编写的一个免费的密码方案库。然而,该库还包含其他有用的类,这些类在使用该库时并不立即显现。其中两个是 HexEncoder
和 HexDecoder
类,可用于(令人惊讶的是)将数据编码和解码为十六进制文本格式,例如 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++ 库的文章。