M2Crypto RSA sign vs OpenSSL rsautl sign

2024-04-24 09:34:36 发布

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

M2Crypto和OpenSSL CLI似乎没有创建相同的数字签名。下面是我在Python中使用的代码:

import M2Crypto
rsa = M2Crypto.RSA.load_key("privkey.pem")
open("sig_m2crypto", "w").write(rsa.sign("md5-digest", "md5"))

下面是使用OpenSSL的命令行:

^{pr2}$

在相同的输入下,sig_m2crypto和{}的结果总是不同的。重要的是我不能验证使用M2Crypto和OpenSSL生成的签名,反之亦然。在

我的代码中有没有什么东西使它们彼此不兼容?在

其他信息:我在Windows7下使用M2Crypto 0.21.1和OpenSSL 1.0.0。在


Tags: key代码importcliloadpemrsamd5
1条回答
网友
1楼 · 发布于 2024-04-24 09:34:36

试试这个:

echo -n "test" | openssl md5 -sign privkey.pem > sig_openssel

-n很重要,因此不会在字符串后面添加额外的换行符)*

在python方面:

^{2}$

现在你们的信号应该是一样的。在

要查看签名文件中的真实内容,可以使用:

openssl rsautl -inkey privkey.pem -verify -in sig_m2crypto -asn1parse

以及

openssl rsautl -inkey privkey.pem -verify -in sig_m2crypto -raw -hexdump

正确的签名包含有关所用摘要的信息,如果只使用openssl rsautl -sign ...,则不会包含这些信息

*编辑:至少在linux上,因为你在windows上,我真的不知道你是否需要它。在

相关问题 更多 >