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

时间:2017-03-19 22:06:08

标签: python rsa

这是我的代码:

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密钥格式”。任何人都可以帮助我从文件中写入/读取私钥的最佳方法吗?

2 个答案:

答案 0 :(得分:1)

我的答案,还有一些复杂的按键对

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)

答案 1 :(得分:0)

您的代码存在多个问题,主要是您阅读和编写密钥的方式。您永远不会关闭文件,然后在读取功能期间打开它两次;尝试将代码更改为:

#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>
相关问题