2012-02-08 17 views
15

Używam PyCrypto 2.3 i chciałbym zapisać klucze, które wygenerowałem w pliku, aby je rozesłać do klienta i serwera. Nie mogę znaleźć sposobu na prawidłowe wydrukowanie kluczy, nie mogę też znaleźć przykładów w Internecie.Zapisywanie kluczy RSA do pliku za pomocą pycrypto

def resetKeys(self): 
     keys = RSA.generate(1024) 

     privHandle = open(self.privateKeyFile, 'wb') 
     privHandle.write(keys.privatekey()) 
     privHandle.close() 

     pubHandle = open(self.publicKeyFile, 'wb') 
     pubHandle.write(keys.publickey()) 
     pubHandle.close() 

Te kody nie działają z wielu powodów: po pierwsze, keys.publickey() nie wydaje się być do druku, zwraca:

<_RSAobj @0x10f810d0 n(1024),e> 

a po drugie, keys ma funkcję o nazwie privatekey.

Czy ktoś to wcześniej zrobił?

Odpowiedz

28

keys.exportKey() dla klucza prywatnego, keys.publickey().exportKey() dla klucza publicznego. Możesz zmienić format wyjściowy za pomocą argumentu format, patrz docs at this site.

+1

ok, okazało się, że DOC 'exportKey' po pewnym badań. Jest to w dokumentacji _RSAobj. Kliknij "pokaż prywatne", aby go zobaczyć. – qdii

+0

Po wyeksportowaniu ich do pliku, po przeczytaniu pliku istnieje sposób na zaimportowanie go do Pythona/Pycrypto? –

+3

@CharlieParker 'RSA.importKey' – wRAR

1

Poniższy fragment kodu tworzy parę kluczy RSA i zapisuje je w plikach PEM, a także drukuje.

oryginalne ECTS: wRAR tego postu & AJ poultier z [pyOpenSSL creating a pem file

from Crypto.PublicKey import RSA 
private_key = RSA.generate(1024) 
public_key = private_key.publickey() 
print(private_key.exportKey(format='PEM')) 
print(public_key.exportKey(format='PEM')) 

with open ("private.pem", "w") as prv_file: 
    print("{}".format(private_key.exportKey()), file=prv_file) 

with open ("public.pem", "w") as pub_file: 
    print("{}".format(public_key.exportKey()), file=pub_file) 
Powiązane problemy