gpt4 book ai didi

python - 如何使用 M2Crypto 从 .pem 文件加载受密码保护的私钥?

转载 作者:太空狗 更新时间:2023-10-30 02:34:02 25 4
gpt4 key购买 nike

我在 .pem 文件中有一个受密码保护的私钥;我想用它来签署对远程服务器的请求。在提示输入密码后,我能够加载 key 并输入密码:

python
>>> import M2Crypto
>>> pk = M2Crypto.RSA.load_key('private.pem')
Enter passphrase:
>>>

但是,我需要这个用于每天早上重新启动的服务器进程,因此必须以某种方式自动传递密码。为此,load_key 方法支持回调参数,因此我尝试了以下几种变体:

>>> def gimmepw():
... return 'mysecret'
...
>>> pk = M2Crypto.RSA.load_key('private.pem', gimmepw)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/local/Plone/Python-2.4/.../M2Crypto/RSA.py", line 351, in load_key
return load_key_bio(bio, callback)
File "/usr/local/Plone/Python-2.4/.../M2Crypto/RSA.py", line 372, in load_key_bio
rsa_error()
File "/usr/local/Plone/Python-2.4/.../M2Crypto/RSA.py", line 302, in rsa_error
raise RSAError, m2.err_reason_error_string(m2.err_get_error())
M2Crypto.RSA.RSAError: bad password read
>>>

(将“...”替换为“lib/python2.4/site-packages”)

我做错了什么?

最佳答案

这是因为您的回调函数中缺少参数支持。由于它将至少使用一个参数调用,因此将发生 TypeError 异常(由 M2Crypto 捕获)。

>>> def gimmepw(*args):
... print 'args:', repr(args)
... return 'test'
...
>>> M2Crypto.RSA.load_key('key.pem', gimmepw)
args: (0,)
<M2Crypto.RSA.RSA instance at 0xb6e8050c>

你应该尝试:

def gimmepw(*args):
return 'mysecret'

关于python - 如何使用 M2Crypto 从 .pem 文件加载受密码保护的私钥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10615098/

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