cryptopp-base64编码/解码后的值不相同
Value after cryptopp base64 encoding/decoding not the same
我正在玩cryptopp,Base64编码/解码有问题。
在下面的代码中,假设sig
的值应该等于tsig
,但它们在最后一个字符上不同(sig
比tsig
大一个符号)。我也尝试过更改Base64Encoder
中的insertLineBreaks
参数,但结果是一样的。…
RSASSA_PKCS1v15_SHA_Signer privkey(privateKey);
SecByteBlock sbbSignature(privkey.SignatureLength());
privkey.SignMessage(rng, (byte const*) strContents.data(),
strContents.size(),sbbSignature);
Base64Encoder b(new StringSink(signedData));
b.Put(sbbSignature.begin(), sbbSignature.size());
string sig;
StringSink sinksig(sig);
sinksig.Put(sbbSignature.begin(), sbbSignature.size());
string tsig;
StringSource ss(signedData, true,
new Base64Decoder(
new StringSink(tsig)
)
);
我的错误在哪里?
b.Put(sbbSignature.begin(), sbbSignature.size());
尝试:
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);
RSA Signature Scheme的Crypto++wiki上有一个带有附录的示例,但我看了之后认为它是错误的。
相关文章:
- 使用已使用 java 编码的 openssl 解码数据
- 在CRC-16 CCITT中将数据从二进制解码为文本,我应该输入一个码字,使用CRC生成器进行编码
- YAML-CPP 编码/解码指针?
- CryptoPP vs PHP Base64 编码/解码
- Python3中的编码/解码(伯克利数据库记录)
- 在C 中对二进制对象进行编码/解码的标准方法
- 流文件Delta编码/解码
- Windows API base64编码/解码
- 跨平台UTF-8字符文件数据编码/解码
- B64在数据不是3的倍数的情况下的编码/解码处理
- C++图像编码/解码库
- 如何使用OpenSSL编码/解码任意数据
- 用C++对URl进行编码/解码
- 数字 > 2^31-1 的变体编码/解码问题
- Windows CryptoAPI对称编码/解码块已经对齐
- 谷歌协议缓冲区-对编码解码base64 char * c字符串协议缓冲区数据感到困惑
- QMessageBox - url编码/解码
- 在c++中编码/解码NSCoder数据
- cryptopp-base64编码/解码后的值不相同
- C++ & Boost:编码/解码 UTF-8