Python Rsa Key Generation Example

An example of asymmetric encryption in python using a public/private keypair - utilizes RSA from PyCrypto library

Jun 19, 2019  RSA Encrypt / Decrypt - Examples. Now let's demonstrate how the RSA algorithms works by a simple example in Python.The below code will generate random RSA key-pair, will encrypt a short message and will decrypt it back to its original form, using the RSA-OAEP padding scheme. First, install the pycryptodome package, which is a powerful Python library of low. Aug 19, 2018  Python PyCrypto: Generate RSA Keys Example.py def generateRSA (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: newkey = RSA. Generate (bits, e = 65537).

RSA_example.py
# Inspired from http://coding4streetcred.com/blog/post/Asymmetric-Encryption-Revisited-(in-PyCrypto)
# PyCrypto docs available at https://www.dlitz.net/software/pycrypto/api/2.6/
fromCryptoimportRandom
fromCrypto.PublicKeyimportRSA
importbase64
defgenerate_keys():
# RSA modulus length must be a multiple of 256 and >= 1024
modulus_length=256*4# use larger value in production
privatekey=RSA.generate(modulus_length, Random.new().read)
publickey=privatekey.publickey()
returnprivatekey, publickey
defencrypt_message(a_message , publickey):
encrypted_msg=publickey.encrypt(a_message, 32)[0]
encoded_encrypted_msg=base64.b64encode(encrypted_msg) # base64 encoded strings are database friendly
returnencoded_encrypted_msg
defdecrypt_message(encoded_encrypted_msg, privatekey):
decoded_encrypted_msg=base64.b64decode(encoded_encrypted_msg)
decoded_decrypted_msg=privatekey.decrypt(decoded_encrypted_msg)
returndecoded_decrypted_msg
########## BEGIN ##########
a_message='The quick brown fox jumped over the lazy dog'
privatekey , publickey=generate_keys()
encrypted_msg=encrypt_message(a_message , publickey)
decrypted_msg=decrypt_message(encrypted_msg, privatekey)
print'%s - (%d)'% (privatekey.exportKey() , len(privatekey.exportKey()))
print'%s - (%d)'% (publickey.exportKey() , len(publickey.exportKey()))
print' Original content: %s - (%d)'% (a_message, len(a_message))
print'Encrypted message: %s - (%d)'% (encrypted_msg, len(encrypted_msg))
print'Decrypted message: %s - (%d)'% (decrypted_msg, len(decrypted_msg))

commented Aug 11, 2018

I ran this code but got an error. It is python 3.7 running the latest PyCryptodome
Would you mind helping? I am a little lost..

File 'C:(the file location and name but i'm not going to list it).py', line 29
print '%s - (%d)' % (privatekey.exportKey() , len(privatekey.exportKey()))
^
SyntaxError: invalid syntax

commented Aug 15, 2018

@maxharrison These print statements indicate it was written for python 2. It could be easily fixable by making use of the print function instead of the print statement., however, no guarantees.

commented Aug 31, 2018

Python Rsa Key Generation Example

I am trying to learn this stuff. When I run this, I get the following error.
return (self.key._encrypt(c),) TypeError: argument 1 must be int, not str
I googled and found a bit on b64encode to be imported or encrypt(hash_pass, 32)[0] to include .encode('hex') but to no avail. Can you help?

commented Sep 18, 2018
edited

Hi @anoopsaxena76,

Just change the encryption line as this:
encrypted_msg = encrypt_message(a_message.encode('utf-8'), publickey)

I just did it myself, it works like a charm

commented Aug 28, 2019

Python Rsa Generate Key Pair

/chesum-key-generation-in-teradata.html. I ran this code but got an error. It is python 3.7 running the latest PyCryptodome

Hey, I'm trying to run this code on Python 3.7 too. What did you change apart from that print statement to adapt the code to Pycrytodome?
I get the error:

File 'C:/Users/..(don't want to show this bit)/Gavcoin3.py', line 15, in
from crypto.Hash import SHA
File 'C:Users(don't want to show this bit)AppDataLocalProgramsPythonPython37libsite-packagescryptoHashSHA.py', line 24, in
from Crypto.Hash.SHA1 import doc, new, block_size, digest_size
ModuleNotFoundError: No module named 'Crypto'

Please help!

Python Rsa Key Generation Example

commented Sep 13, 2019

Hi @GavinAren,

I hope you've already solved your issue but if not:
Look in your python directory for /Lib/site-packages/crypto and change it to Crypto. (Capital C)

commented Oct 2, 2019

Python Rsa Key Generator

I ran this code but got an error. It is python 3.7 running the latest PyCryptodome

Hey, I'm trying to run this code on Python 3.7 too. What did you change apart from that print statement to adapt the code to Pycrytodome?
I get the error:

File 'C:/Users/..(don't want to show this bit)/Gavcoin3.py', line 15, in
from crypto.Hash import SHA
File 'C:Users(don't want to show this bit)AppDataLocalProgramsPythonPython37libsite-packagescryptoHashSHA.py', line 24, in
from Crypto.Hash.SHA1 import doc, new, block_size, digest_size
ModuleNotFoundError: No module named 'Crypto'

Please help!

PyCrypto is written and tested using Python version 2.1 through 3.3. Python
1.5.2 is not supported. My POC resolves that pycrypto is obsoleted in python3.7. Pycryptodome is working alternative of it, but unfortunately it doesn't support plain RSA cryptography.

Python Rsa Key Generation

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