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

2024-03-28 13:45:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我们需要生成一个没有ASN.1编码的数字签名,以供下游应用程序验证。我们可以通过命令行上的openssl实现这一点:

openssl pkeyutl -sign -inkey keyfile < hash

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


Tags: 命令行命令编码hashforkrsa数字签名openssl
1条回答
网友
1楼 · 发布于 2024-03-28 13:45:38

根据this answer,您显示的OpenSSL命令生成一个RSASSA-PKCS1-v1_5签名,根据定义,它总是包含ASN.1der编码结构:您的假设实际上是无效的。你知道吗

然而,当散列算法是固定的时,接收器没有必要也不建议实现完整的DER解析器。它只需检查某个字节字符串是否存在(以及其他一些填充字节,然后在最右边的位置检查摘要)。This other answer显示了最流行的摘要算法的DER编码。你知道吗

如果您真的不想在签名中包含ASN.1,那么只能切换到^{}。你知道吗

相关问题 更多 >