python – M2Crypto RSA.sign vs OpenSSL rsautl -sign
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – M2Crypto RSA.sign vs OpenSSL rsautl -sign,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1180字,纯文字阅读大概需要2分钟。
内容图文
![python – M2Crypto RSA.sign vs OpenSSL rsautl -sign](/upload/InfoBanner/zyjiaocheng/697/a2246220d06d455ab34aec5915c6f24a.jpg)
M2Crypto和OpenSSL CLI似乎没有创建相同的数字签名.这是我在Python中使用的代码:
import M2Crypto
rsa = M2Crypto.RSA.load_key("privkey.pem")
open("sig_m2crypto", "w").write(rsa.sign("md5-digest", "md5"))
这是OpenSSL的命令行:
echo "md5-digest" | openssl rsautl -sign -inkey privkey.pem > sig_openssl
使用相同的输入,sig_m2crypto和sig_openssl的结果总是不同的.重要的是我无法验证使用M2Crypto与OpenSSL生成的签名,反之亦然.
我的代码中是否有任何缺失使它们彼此不兼容?
附加信息:我在Windows 7下使用M2Crypto 0.21.1和OpenSSL 1.0.0.
解决方法:
尝试这个:
echo -n "test" | openssl md5 -sign privkey.pem > sig_openssel
(-n很重要,以便在字符串后不添加额外的换行符)*
在python方面:
import M2Crypto
import hashlib
rsa = M2Crypto.RSA.load_key("privkey.pem")
digest = hashlib.new('md5', 'test').digest()
open("sig_m2crypto", "w").write(rsa.sign(digest, "md5"))
现在你的sig应该是相同的.
要查看签名文件中的实际内容,您可以使用:
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上我真的不知道你是否需要它.
内容总结
以上是互联网集市为您收集整理的python – M2Crypto RSA.sign vs OpenSSL rsautl -sign全部内容,希望文章能够帮你解决python – M2Crypto RSA.sign vs OpenSSL rsautl -sign所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。