【问题标题】:Digital Signature in Python Without ASN.1 Encoding?没有 ASN.1 编码的 Python 中的数字签名?
【发布时间】:2019-01-28 18:11:37
【问题描述】:

我们需要生成一个数字签名没有 ASN.1 编码以供下游应用程序验证。我们可以通过以下方式在命令行中使用 openssl 来做到这一点:

openssl pkeyutl -sign -inkey keyfile < hash

但是,当我尝试在 Python 中进行数字签名(使用 PyCrypto 库)时,如果没有包含 ASN.1 编码的库,我将无法这样做(也就是说,除非我派生 PyCrypto 以允许我删除他们)。 rsa 库也不允许这样做。是否有任何我错过的 Python 加密库或命令允许这种灵活性?

【问题讨论】:

    标签: python openssl rsa digital-signature asn.1


    【解决方案1】:

    根据this answer,您显示的OpenSSL 命令会生成RSASSA-PKCS1-v1_5 签名,根据定义,该签名始终包含ASN.1 DER 编码结构:您的假设并不真正有效。

    但是,当哈希算法固定时,接收方没有必要也不建议实现完整的 DER 解析器。它可以只检查某个字节字符串是否存在(以及一些其他填充字节,并且在检查最右边位置的摘要之前)。 This other answer 展示了最流行的摘要算法的 DER 编码。

    如果你真的不想在你的签名中有ASN.1,你只能切换到RSASSA-PSS

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-03
      • 2014-04-12
      • 2022-11-04
      • 2021-01-07
      • 1970-01-01
      • 1970-01-01
      • 2018-03-20
      • 1970-01-01
      相关资源
      最近更新 更多