gpt4 book ai didi

c++ - cryptopp base64编码/解码后的值不一样

转载 作者:太空宇宙 更新时间:2023-11-04 11:35:49 27 4
gpt4 key购买 nike

我正在玩 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 with Appendix 的 Crypto++ wiki 上有一个示例,但是看了之后觉得不对。

关于c++ - cryptopp base64编码/解码后的值不一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23095254/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com