[英]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.