C++ cryptopp base64编码/解码后的值不相同
我正在玩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
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);