使用Crypto++使用私钥进行签名;SHA1 vs惠而浦
Using Crypto++ to sign using private key; SHA1 vs Whirlpool
我根据这里的RSA-PSSR-Filter-Test.zip示例使用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是不安全的。
然后我在惠而浦找到了这个例子。然而,它似乎并没有提取实际的原始消息,只是声称要验证它。不过,这段代码真的验证了消息吗?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?
我还想知道这里"新"分配的用法;这个代码真的会泄露内存吗?
对于任何错误的术语,我深表歉意;我不在安全领域。
原来RSA-PSSR-Filter-Test.zip示例可以修改为使用SHA3,例如使用枚举值SHA3_512,而不是出现它的SHA1。(您还需要修改一些头包含和使用指令。)仍然不确定为什么我不能从Whirlpool示例中得到响应。有关邮件列表的更多详细信息。
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 数据成员SFINAE的C++17测试:gcc vs clang
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 使用Qt C++计算类似Git的SHA1哈希
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 正在VS调试器中监视映射条目
- Confusion: decltype vs std::function
- 将IBM Rhapsody模型集成到VS 2019中
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 使用VS Code和CMake Tools运行自定义命令
- 修改 VS Code 中的默认C++代码段
- 如何使用c++在VS 2019上运行SQL查询
- vs 2015 constexpr变量不恒定,但与2019相比还好吗
- 完美前进使用 std::forward vs RefRefCast
- 从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- consteval wrapper vs. source_location
- VS Code C++:不准确的系统包括路径错误(wchar.h,boost/lambda/lambda.hpp)
- 使用Crypto++使用私钥进行签名;SHA1 vs惠而浦