我正在根据RSA-PSSR-Filter-Test.zip示例here使用crypto ++,它可以正常工作。
我试图找到可以可靠地用于使用私钥对消息签名并在Qt应用程序中以编程方式使用公钥验证消息来源的东西。
我很高兴我可以在验证签名的同时提取消息:
StringSource(signature, true,
new SignatureVerificationFilter(
verifier,
new StringSink(recovered),
SignatureVerificationFilter::THROW_EXCEPTION | SignatureVerificationFilter::PUT_MESSAGE) // SignatureVerificationFilter
); // StringSource
assert(ui->plainTextEdit->toPlainText().toStdString() == recovered);
但是SHA1是不安全的。
然后我在惠而浦发现了this example。但是,它似乎并没有提取实际的原始消息,只是声称要对其进行验证。 ArraySink的用法对我来说似乎有些深奥,所以我不知道。
bool result = false;
Verifier verifier(publicKey);
CryptoPP::StringSource ss2(decodedSignature + aMessage, true,
new CryptoPP::SignatureVerificationFilter(verifier,
new CryptoPP::ArraySink((byte*)&result,
sizeof(result))));
return result;
我试图将代码转换为类似于SHA1示例,但这不会提取任何消息:
CryptoPP::StringSource ss2(decodedSignature, true,
new CryptoPP::SignatureVerificationFilter(verifier,
new StringSink(recovered)));
是否可以使用Whirlpool将此代码转换为从签名中实际提取消息,或者即使看起来像是PSSR,实际消息也不包含在签名中?
我也想知道这里“新”分配的用法;该代码实际上会泄漏内存吗?
我对任何错误的术语表示歉意;我不在安全领域。
答案 0 :(得分:0)
通过使用枚举值SHA3_512代替出现的SHA1,可以将原始RSA-PSSR-Filter-Test.zip example修改为使用SHA3。 (您还需要修改一些标头包含和使用指令。)仍不确定为什么我无法从Whirlpool示例中得到响应。有关mailing list的更多详细信息。