繁体   English   中英

没有ASN.1编码的Python中的数字签名?

[英]Digital Signature in Python Without ASN.1 Encoding?

我们需要生成不带 ASN.1编码的数字签名,以供下游应用程序进行验证。 我们可以通过在命令行上使用openssl来做到这一点:

openssl pkeyutl -sign -inkey keyfile < hash

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

根据此答案 ,您显示的OpenSSL命令将生成一个RSASSA-PKCS1-v1_5签名,根据定义,该签名始终包含ASN.1 DER编码的结构:您的假设实际上无效。

但是,在哈希算法固定的情况下,接收器无需实现完整的DER解析器,也无需这样做。 它可以只检查是否存在某个字节字符串(以及其他填充字节,并在最右边的位置检查摘要之前)。 这个其他答案显示了最流行的摘要算法的DER编码。

如果您确实不想在签名中包含ASN.1,则只能切换到RSASSA-PSS

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM