2017-01-15 51 views
0

這對於RSA https://www.dlitz.net/software/pycrypto/api/current/Crypto.PublicKey.RSA-module.html PyCrypto的文檔.PEM文件中讀取RSA密鑰提到了這一點,我們應該如何寫入和讀取鍵和.PEM時:ValueError異常使用ImportKey

from Crypto.PublicKey import RSA 

key = RSA.generate(2048) 
f = open('mykey.pem','w') 
f.write(RSA.exportKey('PEM')) 
f.close() 
... 
f = open('mykey.pem','r') 
key = RSA.importKey(f.read()) 

這是怎麼我已經做了。

random_generator = Random.new().read 
rsakey = RSA.generate(1024, random_generator) 
f = open(email + '.pem', 'w') 
cipher = PKCS1_OAEP.new(rsakey.publickey()) 
f.write(str(rsakey.exportKey("PEM"))) 
f.write(str(rsakey.publickey().exportKey("PEM"))) 
... 
f = open(receiver + '.pem', 'r') 
key = RSA.importKey(f.read()) 
pubkey = key.publickey() 
f.close() 

但它返回此錯誤:

File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Crypto/PublicKey/RSA.py", line 682, in importKey 
    raise ValueError("RSA key format is not supported") 
ValueError: RSA key format is not supported 

回答

1

寫的鑰匙, 「WB」 模式解決了這個問題

random_generator = Random.new().read 
rsakey = RSA.generate(1024, random_generator) 
f = open(email + '.pem', 'wb') 
cipher = PKCS1_OAEP.new(rsakey.publickey()) 
f.write(str(rsakey.exportKey("PEM"))) 
f.write(str(rsakey.publickey().exportKey("PEM"))) 
... 
f = open(receiver + '.pem', 'r') 
key = RSA.importKey(f.read()) 
pubkey = key.publickey() 
f.close()