How To Use RSA in Python

In this tutorial, we will learn how to use the RSA algorithm in Python. The RSA (Rivest-Shamir-Adleman) algorithm is a widely used public key cryptography algorithm that allows for secure data transmission. We will be using the cryptography library in Python to perform encryption and decryption using RSA keys.

To get started, first, make sure you have the cryptography library installed. If not, you can install it using pip:

Step 1: Generate RSA key pair

The first step is to generate a key pair (public and private keys) that will be used for encryption and decryption. The recommended key size is 2048 bits or higher for better security.

Now we can generate a 2048-bit RSA key pair:

Step 2: Serialize RSA keys

Now that we have generated our key pair, we need to serialize them so they can be saved or transmitted securely. We will use the PEM format and encrypt the private key with a passphrase.

Serialize keys and save them:

Step 3: Load RSA keys

Now, let’s load the serialized RSA keys back from the files.

Load keys:

Step 4: Encrypt and decrypt with RSA

Now that we have our keys, we can start encrypting and decrypting data. The cryptography library provides encrypt and decrypt methods for the public_key and private_key objects respectively.

Now, let’s encrypt and decrypt a message:

Encrypted message: b'\x1d\xf0...\xad\xb6'
Decrypted message: Hello, world!

Full code example:

Output

Encrypted message: b's\xe3\x95\xc7g\xa8pc4\x87\xf7\xbe4AN\x14\x9b\xb2\xde\xdb\xe9\xbb\xbew\xce\xf9\xde\x14Z\x8b\x89\xee\x80&RI\xe9&\xa6\xd9\x80O\x88)\xb65s\xd7k\xec\xbd\xfa\xd8\xb0^\xad"\n\xcc\x94r\xbcJ\xc5\x8d\xc5\xd6\xf9\xa4\xf2n+\xf3\xa2\xe2\x96\xd9\x18H\xe06}\x00b\xbaP\xc4\x8f\xef\x03\x19<\x87\n\x0f\xdf\x16(\xdb\x90\xe5\x80\x1b\xaa\xc6\xb7\xe6\x9ej\x82D-\xc4\xbe\xe2\x07\x0eX\xe4aHJ\x90x\x06\xbf\x83\x8f\xf89\x80.\xb3\xf3zZ\xb2VX\x87\xdb\xcc\xad\xc3\x05,=\xfb_1\x9e\xd9\x87\xabw\nK\xe9\xed\xd0\xd2\xfb\xf0;\xd0\xb7\x05.\x06\xd94T_\x98\x08\xef\x8dI\xd2\x15\xae+\xd7\xbf\xd4\x0e\x9aC\xcc9L\xa8\xc4\xda\xb9\x1ap%\xc5\xfb\x7f\xe42q\xb0\x12\xd9\xf5\xd6\r\x8e\xf6\x12R\xf4_3|}\xb2\xb0\x02\xc7\xd2\xe0P\x924\xeb;\x1b\xee\xf8\x18\x97|\xc9\x89+\x99\xa1\xc1H\xfa\xaaE\x8f\xa2f\x8c8\xf1C\xb4'
Decrypted message: Hello, world!

Conclusion

In this tutorial, we learned how to use the RSA algorithm in Python with the help of the cryptography library. We generated an RSA key pair, serialized the keys, loaded them back, and encrypted and decrypted messages using the keys. This can be very useful for creating secure communications between applications and systems.