代码之家  ›  专栏  ›  技术社区  ›  Olli Savolainen

使用Crypto++使用私钥进行签名;沙一对惠而浦

  •  0
  • Olli Savolainen  · 技术社区  · 7 年前

    根据RSA-PSSR-Filter-Test.zip示例,我正在使用crypto++ here 它是有效的。

    我正试图找到一些可靠的方法,在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

      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)));
    

    我还想知道这里“新”分配的用法;这段代码真的会泄漏内存吗?

    我对任何错误的术语表示歉意;我不在安全领域。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Olli Savolainen    7 年前

    原来是 RSA-PSSR-Filter-Test.zip example 可以修改为使用SHA3,例如使用枚举值SHA3_512,而不是出现SHA1。(您还需要修改一些标题包含和使用指令。)仍然不确定为什么我无法从Whirlpool示例中获得响应。有关 mailing list .