问题
I’m using PyCrypto 2.3 and I would like to save the keys I have generated into a file, so as to distribute them to the client and server. I can’t seem to find a way to print the keys correctly, neither can I find examples on the internet.
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()
This codes does not work for many reasons: first, keys.publickey() doesn’t seem to be printable, it returns:
<_RSAobj @0x10f810d0 n(1024),e>
and second, keys has no function named privatekey.
Has anyone done that before?
回答1:
keys.exportKey() for the private key, keys.publickey().exportKey() for the public key. You can change the output format with format argument, see the docs at this site.
回答2:
The following piece of code will create the RSA key pair and store them in PEM files as well as print them.
Original credits : wRAR from this post & AJ poultier from [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)
来源:https://stackoverflow.com/questions/9197507/saving-rsa-keys-to-a-file-using-pycrypto