Skip to content

Instantly share code, notes, and snippets.

@lkdocs
Last active April 22, 2022 01:29
Show Gist options
  • Select an option

  • Save lkdocs/6519378 to your computer and use it in GitHub Desktop.

Select an option

Save lkdocs/6519378 to your computer and use it in GitHub Desktop.
def generate_RSA(bits=2048):
'''
Generate an RSA keypair with an exponent of 65537 in PEM format
param: bits The key length in bits
Return private key and public key
'''
from Crypto.PublicKey import RSA
new_key = RSA.generate(bits, e=65537)
public_key = new_key.publickey().exportKey("PEM")
private_key = new_key.exportKey("PEM")
return private_key, public_key
@merlijn-sebrechts

merlijn-sebrechts commented Aug 5, 2016

Copy link
Copy Markdown

Pycrypto is unmaintained and has known vulnerabilities. Use pycryptodome, it is a drop-in replacement.

@mohit1337

mohit1337 commented Aug 16, 2016

Copy link
Copy Markdown

Gives me error:

    new_key = RSA.generate(bits, e=65537)
TypeError: generate_c() got an unexpected keyword argument 'e'

@miigotu

miigotu commented Jan 17, 2017

Copy link
Copy Markdown

e should be random methinks =P

@warsm

warsm commented May 17, 2017

Copy link
Copy Markdown

@miigotu "youthinks" wrong. e should be chosen so that e and λ(n) are coprime. It is not chosen at random, and since it is usually small for computation reasons, and included in the public key, it can always be known by an attacker anyway.

@ygg-aravind

Copy link
Copy Markdown

from Crypto.PublicKey import RSA
code = 'nooneknows'

key = RSA.generate(2048)
privatekey = key.exportKey(passphrase=code, pkcs=8)
publickey = key.publickey().exportKey()

@WarAtLord

Copy link
Copy Markdown

Nice But How Can I Write The Private Key I Tried This:
f = open('PublicKey.pem','w')
f.write(publick_key)
f.close()

BUT IT DOESN'T WORK WITH THE PRIVATE KEY, JUST RETURNS 0B

@mynameisvinn

Copy link
Copy Markdown

@WarAtLord try publick_key.exportKey("PEM")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment