【问题标题】:How to verify signature with pss padding?如何使用 pss 填充验证签名?
【发布时间】:2017-06-08 06:23:09
【问题描述】:

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

谢谢

C:\Project\pkc>openssl pkeyutl -sign -in cp1.bin -inkey pvt_dbg.pem -out sig1.bin -pkeyopt digest: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 签名验证失败

【问题讨论】:

标签: openssl


【解决方案1】:

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

$ 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

然后

$ 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

【讨论】:

  • 在带有 OpenSSL 1.0.1f 的 Ubuntu 上,所有 pkeyopts 必须接近结尾,否则会引发以下错误:-pkeyopt command before -inkey。另外,我使用以下命令生成哈希:openssl dgst -sha256 -binary payload.bin > cp1.bin
  • @akhan 帮我省了很多麻烦
猜你喜欢
  • 1970-01-01
  • 2011-10-15
  • 2021-01-12
  • 1970-01-01
  • 2012-01-18
  • 1970-01-01
  • 2013-04-19
  • 2014-08-18
  • 2021-02-04
相关资源
最近更新 更多