2012-02-08 26 views
15

Tôi đang sử dụng PyCrypto 2.3 và tôi muốn lưu các khóa mà tôi đã tạo vào một tệp để phân phối chúng cho máy khách và máy chủ. Tôi dường như không thể tìm cách in chính xác các phím, tôi cũng không thể tìm thấy các ví dụ trên internet.Lưu khóa RSA vào một tệp, sử dụng 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() 

mã này không làm việc vì nhiều lý do: thứ nhất, keys.publickey() dường như không thể in được, nó sẽ trả về:

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

và thứ hai, keys không có chức năng đặt tên privatekey.

Có ai đã làm điều đó trước đây không?

Trả lời

28

keys.exportKey() cho khóa riêng, keys.publickey().exportKey() cho khóa công khai. Bạn có thể thay đổi định dạng đầu ra với đối số format, xem docs at this site.

+1

Ok, thấy doc của 'exportKey' sau khi một số nghiên cứu. Nó nằm trong tài liệu _RSAobj. Nhấp vào 'hiển thị riêng tư' để xem nó. – qdii

+0

Bây giờ bạn đã xuất chúng sang một tệp, khi bạn đọc tệp, có cách nào để nhập chúng trở lại python/pycrypto không? –

+3

@CharlieParker 'RSA.importKey' – wRAR

1

Đoạn mã sau sẽ tạo cặp khóa RSA và lưu chúng trong tệp PEM cũng như in chúng.

tín Original: wRAR từ này bài & AJ poultier từ [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) 
Các vấn đề liên quan