2017-01-15 1 views
0

Diese Dokumentation von PyCrypto für RSA https://www.dlitz.net/software/pycrypto/api/current/Crypto.PublicKey.RSA-module.html dies erwähnt, wie wir sollen Tasten zu und von .PEM schreiben und zu lesen:Valueerror, wenn sie von .PEM Datei RSA-Schlüssel zu lesen mit 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()) 

und dies ist, wie ich habe es getan.

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() 

aber es gibt diesen Fehler zurück:

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 

Antwort

1

die Schlüssel in "wb" Modus Schreiben hat das Problem gelöst

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() 
Verwandte Themen