从.pem fi读取时,python“不支持RSA密钥格式”

2024-05-12 14:28:08 发布

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

这是我的代码:

from Crypto.PublicKey import RSA

#Write key to file
key = RSA.generate(4096)
privateKey = key.exportKey()
file1 = open('keyfile.pem', 'wb')
file1.write(privateKey)
file1.close()

#Read key from file
file2 = open('keyfile.pem', 'rb')
key = RSA.importKey(file2.read()) #this is the problem

错误是“不支持RSA密钥格式”。有人能帮助我从文件中写入/读取私钥的最佳方法吗?


Tags: key代码fromimportopencryptopemrsa
2条回答

我的答案和一对钥匙有点复杂

from Crypto.PublicKey import RSA
key = RSA.generate(4096)
f = open('/home/john/Desktop/my_rsa_public.pem', 'wb')
f.close()
f.write(key.publickey().exportKey('PEM'))
f = open('/home/john/Desktop/my_rsa_private.pem', 'wb')
f.write(key.exportKey('PEM'))
f.close()

f = open('/home/john/Desktop/my_rsa_public.pem', 'rb')
f1 = open('/home/john/Desktop/my_rsa_private.pem', 'rb')
key = RSA.importKey(f.read())
key1 = RSA.importKey(f1.read())

x = key.encrypt(b"dddddd",32)

print(x)
z = key1.decrypt(x)
print(z)

您的代码有多个问题,主要是您读写密钥的方式。您从不关闭该文件,然后在read函数期间将其打开两次;请尝试将代码更改为:

#Write key to file
key = RSA.generate(4096)
f = open('keyfile.pem', 'wb')
f.write(key.exportKey('PEM'))
f.close()

#Read key from file
f = open('keyfile.pem', 'rb')
key = RSA.importKey(f.read())

结果

<_RSAobj @0x10d3cb2d8 n(4096),e,d,p,q,u,private>

相关问题 更多 >