gpt4 book ai didi

xml - 使用 M2Crypto 从 xml 数据文件生成公钥以进行签名验证

转载 作者:行者123 更新时间:2023-12-04 07:00:40 26 4
gpt4 key购买 nike

我有 xml 格式的公钥:

<RSAKeyValue><Modulus>xF9y25EXh8n99sXtU/JAsYTwML6PB7gSCE8tWw8Www2KBfDqohQBL8FMs8jzsDQa7WwoEmiVJ1resEC9YXJGbwQyWgb9qgooC9oSnCB/TkRdBybwby0DKuZOzq+609OBGkwWpgnS4QVCBc6eW+10l3qE3/2hKdcSV+08iRYp7zs=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>

所以我尝试这样:
from M2Crypto import RSA
from xml.dom.minidom import parseString
import base64

dom = parseString(pubKey)
e = base64.b64decode(dom.getElementsByTagName('Exponent')[0].childNodes[0].data)
n = base64.b64decode(dom.getElementsByTagName('Modulus')[0].childNodes[0].data)
rsa = RSA.new_pub_key((e, n))

有错误:
    ...
rsa = RSA.new_pub_key((e, n))
File "/usr/lib/pymodules/python2.6/M2Crypto/RSA.py", line 390, in new_pub_key
m2.rsa_set_e(rsa, e)
M2Crypto.RSA.RSAError: invalid length

有任何想法吗?

最佳答案

RSA.new_pub_key文档指出 en需要采用 OpenSSL MPINT 格式(4 字节 big-endian 位计数后跟适当的位数)。看来至少是你的 e不是那种格式。如果你看看test_rsa.py ,你可以看到这样的评论:

'\000\000\000\003\001\000\001' # aka 65537 aka 0xf4

看来你的 e只是“\001\000\001”。如果我们在它前面加上 '\000\000\000\003',你的示例应用程序会更进一步,但是尝试设置 n 失败.我还没有研究如何创建有效的 OpenSSL MPINT 值,所以这不是您问题的完整答案。

关于xml - 使用 M2Crypto 从 xml 数据文件生成公钥以进行签名验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1900083/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com