Я использую crypto ++ в соответствии с примером RSA-PSSR-Filter-Test.zip здесь , и это работает.
Я пытаюсь найти что-то, что я могу надежно использовать для подписания сообщения с закрытым ключом и программной проверки его происхождения с открытым ключом в приложении 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 небезопасен.
Тогда я нашел этот пример с Whirlpool.Тем не менее, кажется, что оно не извлекает фактическое исходное сообщение, а только утверждает, что проверяет его. Правда ли этот код проверяет сообщение?Использование 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?
Мне также интереснооб использовании «новых» размещений здесь;действительно ли этот код пропускает память?
Мои извинения за ошибочную терминологию;Я не в сфере безопасности.