如何使用pss padding验证签名?

use*_*600 3 openssl

我们为 RSA 签名创建了调试公钥和私钥。我们生成 sha256 哈希并保存在 cp1.bin 中。然后我们尝试验证签名但总是失败。如果我们不使用 pss padding,则 verify 命令将通过。有谁可以帮忙评论一下吗?

谢谢

C:\ Project \ pkc> openssl pkeyutl -sign -in cp1.bin -inkey pvt_dbg.pem -out sig1.bin -pkeyopt 摘要:sha256 -pkeyopt rsa_padding_mode:pss -pkeyopt rsa_pss_saltlen:32

C:\Project\pkc>openssl pkeyutl -verify -in cp1.bin -sigfile sig1.bin -pkeyopt rsa_padding_mode:pss -pkeyopt rsa_pss_saltlen:32 -pubin -inkey pub_dbg.pem 签名验证失败

use*_*600 6

现在可以成功运行验证命令。

$ openssl pkeyutl -sign \
  -in hashOut.bin -inkey pvt_dbg.pem \
  -out sig1.bin \
  -pkeyopt digest:sha256 \
  -pkeyopt rsa_padding_mode:pss \
  -pkeyopt rsa_pss_saltlen:-1
Run Code Online (Sandbox Code Playgroud)

然后

$ openssl pkeyutl -verify \
  -in cp1.bin -sigfile sig1.bin \
  -pkeyopt rsa_padding_mode:pss \
  -pubin -inkey pub_dbg.pem \
  -pkeyopt rsa_pss_saltlen:-1 \
  -pkeyopt digest:sha256
Run Code Online (Sandbox Code Playgroud)

  • 在使用 OpenSSL 1.0.1f 的 Ubuntu 上,所有 `pkeyopt` 必须位于末尾,否则会引发以下错误:`-pkeyopt 命令在 -inkey` 之前。另外,我使用以下命令生成哈希:`openssl dgst -sha256 -binary Payload.bin > cp1.bin` (2认同)