【问题标题】:How to show the actual value of a signature using the RSA library in Python?如何在 Python 中使用 RSA 库显示签名的实际值?
【发布时间】:2016-09-23 15:59:59
【问题描述】:

我正在使用RSA library 使用公钥检查数字签名,如下所示:

rsa.verify(message, sig, key)

该函数按预期工作,但是对于不正确的情况,库会打印出来

rsa.pkcs1.VerificationError: Verification failed

我想查看实际的计算值,以便将其与预期值进行比较。有没有办法在不调整库内部的情况下打印它?

【问题讨论】:

  • verify() 方法并没有那么复杂,您可以简单地复制并更改为您需要的方式。
  • 我明白,但我不想更改库,因为这需要其他用户使用我修改后的库版本。
  • 也许,我可以根据他们的 verify() 制作自己的函数。
  • 是的,这就是我通过复制函数代码来实现的,直接修改库将是一个坏主意。另一种方法是捕获错误并从调用堆栈中提取值(使用inspect.stack()

标签: python rsa digital-signature


【解决方案1】:

使用verify()方法作为模板:

from rsa import common, core, transform

keylength = common.byte_size(base)
decrypted = core.decrypt_int(sig, exp, base)
clearsig = transform.int2bytes(decrypted, keylength)

这是假设您的签名为sig,公钥的模数和exp分别为baseexp

最后要注意的是,您的哈希可能在开头包含填充。当我使用 SHA-256 时,我必须查看 clearsig 的最后 32 个字节。

【讨论】:

  • 看来您已经删除了填充部分。适当的填充对于 RSA 签名的安全性非常重要。通过这样做,您实际上可能已经完全颠覆了 RSA 签名。虽然,我不确定。
猜你喜欢
  • 1970-01-01
  • 2012-08-07
  • 1970-01-01
  • 1970-01-01
  • 2023-01-19
  • 2017-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多