load_pub_key中的文件访问

0 投票
3 回答
945 浏览
提问于 2025-04-15 13:51

考虑以下代码:

fileHandle = open ( 'test8.pem','w' )
fileHandle.write (data)
pub_key = M2Crypto.RSA.load_pub_key(open('test8.pem'))

这段代码会产生以下错误:

 File "/usr/lib/python2.4/site-packages/M2Crypto/RSA.py", line 343, in load_pub_key
bio = BIO.openfile(file) 
  File "/usr/lib/python2.4/site-packages/M2Crypto/BIO.py", line 186, in openfile
    return File(open(filename, mode))
IOError: [Errno 2] No such file or directory: ''

我该如何将文件传递给 load_pub_key 方法,这样我只需要传递文件名就能访问它呢?

3 个回答

0

我也遇到了同样的问题。我试着用文件处理器来代替路径,但没有用。

最后解决这个问题的是使用M2Crypto中的X509模块。你可以试试下面这些函数来获取一个公钥实例:

certificate = M2Crypto.X509.load_cert(cert_path)
pubkey = certificate.get_pubkey()

更多细节可以在以下回答中找到: 使用m2crypto进行RSACryptoServiceProvider消息签名验证

0

这个应该对你有用:

fname = 'test8.pem'
fileHandle = open(fname, 'w')
fileHandle.write(data)
fileHandle.close()
pub_key = M2Crypto.RSA.load_pub_key(fname)
0

如果你在代码中直接写test8.pem而不加引号,Python会把它当作一个变量的名字来处理,但这个变量并没有定义,所以就会报错。

我不太清楚你使用的具体库是什么,但我猜你应该传入fileHandle这个东西。

撰写回答