C++ cryptopp base64编码/解码后的值不相同

C++ cryptopp base64编码/解码后的值不相同,c++,base64,crypto++,C++,Base64,Crypto++,我正在玩cryptopp,在Base64编码/解码方面遇到了问题 在下面的代码中,假设sig值应等于tsig,但它们在最后一个字符上不同(sig比tsig大一个符号)。我还尝试在Base64Encoder中更改insertLineBreaks参数,但结果相同。 我的错在哪里 b.Put(sbbSignature.begin(), sbbSignature.size()); 尝试: 这看起来不太正确: SecByteBlock sbbSignature(privkey.SignatureLe

我正在玩cryptopp,在Base64编码/解码方面遇到了问题

在下面的代码中,假设
sig
值应等于
tsig
,但它们在最后一个字符上不同(
sig
tsig
大一个符号)。我还尝试在
Base64Encoder
中更改
insertLineBreaks
参数,但结果相同。

我的错在哪里

b.Put(sbbSignature.begin(), sbbSignature.size());
尝试:


这看起来不太正确:

SecByteBlock sbbSignature(privkey.SignatureLength());
privkey.SignMessage(rng, (byte const*) strContents.data(),
    strContents.size(),sbbSignature);
尝试:



上的Crypto++wiki上有一个示例,但我认为它是错误的。

上的Crypto++wiki页面现在已修复。是的,它工作正常。b、 MessageEnd();-有一件事我错过了。是的,很容易错过
base64编码器
base64解码器
缓冲数据,查找下一个完整的3或4个字符块以进行编码或解码。这也是
HexEncoders
base32编码器
的问题,尤其是与
文件链接
结合时<代码>文件链接将缓冲1024字节。
b.Put(sbbSignature.begin(), sbbSignature.size());
b.MessgeEnd();
SecByteBlock sbbSignature(privkey.SignatureLength());
privkey.SignMessage(rng, (byte const*) strContents.data(),
    strContents.size(),sbbSignature);
size_t maxLength = privkey.MaxSignatureLength();
SecByteBlock sbbSignature(maxLength);

size_t signatureLength = privkey.SignMessage(rng,
    (byte const*) strContents.data(), strContents.size(),
    sbbSignature);

if(maxLength != signatureLength)
    sbbSignature.resize(signatureLength);