2010-08-17 47 views
17

Tôi đang sử dụng RSA để mã hóa/giải mã khóa phiên của mình bằng Python. Tôi đang sử dụng thư viện Pycrypto. Sau khi tạo cặp khóa, tôi muốn trích xuất khóa cá nhân và khóa công khai từ khóa đã tạo và lưu trữ chúng trong các tệp khác nhau. Tôi có thể làm cái này như thế nào? Tôi có thể thấy phương thức Private có thể cho biết rằng cặp khóa được tạo ra có thành phần riêng nhưng không thể tìm thấy cách trích xuất cả hai khóa từ cặp khóa được tạo ra này. Bất kỳ đề xuất nào cũng sẽ hữu ích.Sử dụng RSA trong Python

Trả lời

40

Nếu bạn muốn nhận được phần theo từ họ quan trọng, có key thuộc tính cho rằng:

>>> from Crypto.PublicKey import RSA 
>>> RSAkey = RSA.generate(1024) 
>>> getattr(RSAkey.key, 'n') 
13773...L 
>>> getattr(RSAkey.key, 'p') 
11731...L 
>>> getattr(RSAkey.key, 'q') 
11740...L 

linh kiện có sẵn là 'n', 'e', ​​'d', 'p', 'q ', 'u'

Nếu bạn chỉ muốn lưu nó trong PEM, bạn nên sử dụng phương pháp exportKey() (có sẵn từ 2,2)

>>> private = RSA.generate(1024) 
>>> public = private.publickey() 
>>> private.exportKey() 
'-----BEGIN RSA PRIVATE KEY-----\nMIICXgIBAAKBgQDo1M0P3nryaF8ZITv8vCFVnjUJ1mnIsrqXZRTzjin69xepr3cz\nKicG3EYSUqMODQAsvMj0tGMo+ElGOVOkPFLVVBHd8izgA/E1RqUzbUDMj4WnhlhA\nQq7tNaViOXNaZ7krJZHabZKxfYvLAQtm4tr+m5NtXPBaWvjwhd5M9xvktwIDAQAB\nAoGBANVsS1Rikbymo5V7e2teYAgFb4THAEyyWIvyYlQnWp/r48rtRoyl9QQ64hhl\nm4WDsUdQ/bwhpkul3DT804jWqu2V71p68rQP7h5D6ldCBUr5nQc9o/uEyy4YCgxD\n/ZxNiY5Bb/lMP9nhb2NbG4184mhUMHu+06wWX6RrXQtMtjYhAkEA8DioToMZIy3s\nhPohri3CAgByV2Jxf7JPqVZ93JjlSlBz+aybSv1mOJUPRFpkMk2xiPmHtEn16hYr\nesVK11tcjwJBAPgf4QYAw9dV+DuVqdwz+kmTjnlkr0Q7fjaGfl60DWmuLWmxiRhe\nMYQ2+8iyPDmxcPFTGSpGqyvyJDjQ/wOlWVkCQQCRIuotZW/OnXSFc0reHa9V3kc3\nHLdOW8FdonAw0//Uwn8PnoXE7QzRqt2qgqJ+8goNpBWli/oUEIj8iC8LpptpAkBV\nFFlMfaaph8j+ZWtBHnGMGRSZe3S9qMi2WZerUYHn4tmfjEi+Gk5QT6o2Pyd3gOiB\nV0Uhwemfv/+7m65VybTBAkEA5H59kG+B9HHD5hJtksAtMh8dxk/MI8G0csduU0vu\n7K5ejL522XsHurVrWdqnk6KvjlRXqB4FsMWLE6RBgBNV0A==\n-----END RSA PRIVATE KEY-----' 
>>> public.exportKey() 
'-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDo1M0P3nryaF8ZITv8vCFVnjUJ\n1mnIsrqXZRTzjin69xepr3czKicG3EYSUqMODQAsvMj0tGMo+ElGOVOkPFLVVBHd\n8izgA/E1RqUzbUDMj4WnhlhAQq7tNaViOXNaZ7krJZHabZKxfYvLAQtm4tr+m5Nt\nXPBaWvjwhd5M9xvktwIDAQAB\n-----END PUBLIC KEY-----' 
Các vấn đề liên quan