Saving RSA keys to a file, using pycrypto

回眸只為那壹抹淺笑 提交于 2019-11-27 03:21:35

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!