Python RSA Encryption And Decryption Example

The cryptographic technique known as Rivest-Shamir-Adleman, or RSA, is used for certain security services or goals. It allows for public-key encryption and is frequently used to protect sensitive data, especially when it's being transferred over an unreliable network like the HTTP. Whereas a private key is confidential and needs to be kept to yourself, a public key is shared with others. 

The following illustration highlights how asymmetric cryptography works: 

Example: RSA Encryption and Decryption with RSA-OAEP Padding

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
import base64

 # 2048 is the number of bits for RSA
keys = RSA.generate(2048)

publicKey = keys.publickey()
publicKeyPEM = publicKey.exportKey()
print("\n",publicKeyPEM.decode('ascii'))


privateKeyPEM = keys.exportKey()
print("\n",privateKeyPEM.decode('ascii'))

# Your secret text
secretMessage = 'This is your secret'

#encrypt the message with the RSA public key
encryptor = PKCS1_OAEP.new(publicKey)
encrypted = encryptor.encrypt(secretMessage.encode())
print("\nEncrypted:", base64.b64encode(encrypted).decode('ascii'))

#decrypt the message with the RSA private key
decryptor = PKCS1_OAEP.new(keys)
decrypted = decryptor.decrypt(encrypted)
print('\nDecrypted Message:', decrypted)

Console output:

 -----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3+v1KRkLSMyKO1Zp3bQW
aXxMbZu7zCjMnOj7VUYtTdLqMbZ89JgTWPPUoYPkydHSkSoBCP67/CsNczeHWW1R
g6Vr5hYqp3NSsEJdLhf2s3OPe4jU/0OpnH+YzPwZILe+uPwsSzsFRWae3kTbVhtW
XuZc/Lfx3KOxeR2FZWs4oJIjN7EiJzGuvvDwndk4WgRD++XtEMfSkVl2PB2CU8hc
G2yKcaVQDSLBwMKHqwsgy+K/wPmclLtkKZvgtsu23iL2iNfTyOvV3ewGrBZ841hl
UjyO5I+oOXz0KzPkKdFyGYRSQk6WlJdoQ8tLYmLUCkIiChUz2w+7iAL9qMK3iTmU
UwIDAQAB
-----END PUBLIC KEY-----

 -----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA3+v1KRkLSMyKO1Zp3bQWaXxMbZu7zCjMnOj7VUYtTdLqMbZ8
9JgTWPPUoYPkydHSkSoBCP67/CsNczeHWW1Rg6Vr5hYqp3NSsEJdLhf2s3OPe4jU
/0OpnH+YzPwZILe+uPwsSzsFRWae3kTbVhtWXuZc/Lfx3KOxeR2FZWs4oJIjN7Ei
JzGuvvDwndk4WgRD++XtEMfSkVl2PB2CU8hcG2yKcaVQDSLBwMKHqwsgy+K/wPmc
lLtkKZvgtsu23iL2iNfTyOvV3ewGrBZ841hlUjyO5I+oOXz0KzPkKdFyGYRSQk6W
lJdoQ8tLYmLUCkIiChUz2w+7iAL9qMK3iTmUUwIDAQABAoIBAHur8od0UYsvjNkg
7O+J2yb/g6a18I7dqcSv2MBMNhFZgAdc5r6gj279nF5oXiApRsbuEAxLxL+Nd6w+
6v41JmQzJNi7PWumgfDfdl9S1Opf1MtB04H4eOD6iAYO5kHvueKpRD14p3yhJPVV
yl5QUu+vA4SAg5B8yDRAXcCZ63iitV+k/v5K5NjvuxyJEl9TNEd1lAqeSGNvqPOM
NiHca7maA96CkiAz31fAOIUqriR9itFfYxee5yk+t14e6iFaaqYsu/gTw2TH6R1h
4B1JzTwj+DssxCvSfo0YYcozsNvqKvA5QkTcZboSAzoNoJCWzveAGrE1feIdThxz
9R77wgECgYEA7pr1gWVuATqKJFoo4eerNBnL0hQKNuX+pbjKtRLSyrVSPlXnK0mu
EeZoZ4Dt70BKu6OUaPzZrgoVU8y3I7bM8EeQco0XLR4gfabhiAn+RgvBU3RbPNRL
IoAcNj5F5JGCREbKAVj3kH66EcFJp+uNRRfvH3cCkBrOHZ7LPRVvoEECgYEA8D72
MuHGmQk/0DkinEO+D8eNa7LNJYQzUX6ed32nBcV1GWFDak9dt+PcWDKxEot7ngz4
pd2EwfnNGjgW1hY+qBJvK1WwpjL/of3bxkK4ZXM6ccpNfUyI6I7k/acLJjerjPYV
sfYC10y4wHYBiAUUbmYeJJBL3hyVp7NFLlSMz5MCgYEAkrkfNs6UcpT41ZnLgf7f
vE4Qk8JW9aNAj8+uduJ4VMZjKInSeT/5lnBEy0DxDypNykywuk6h3O++ZaWBCKkk
JK0dGhPAqLHZ8OppzSm3/oLEAvmOET3KZhC5SHHKsN75Z9rP5Tw8H9KNwNVG4cdr
O42YMZURMmQJUxWOjKVd2wECgYBBBimIuAcSoKg+6Vfux38HslEalzhjMRbatdSa
Ls4oB7ub9PFUMssA3JFk5cN7a3k32/bonb4y6jOTJx83Lqoiv2qLZhP7x83cwGLd
lG1oN/nXlpPGmBJuL07XQIEKBQNPkcNpeVZng4J1xPrBH+7ZupXp+4wtP7tZunG9
CnFaNQKBgC/WWLEhbthbJYtnNJosJ7umgmeMYgaDHnj9R38gAAn9meN0xeKspW97
jVonUpJeslYJZn1iVlBVPAjegO6HU/enAETfgenLwdcvT0yJ2Goyg11u586r2LJT
WjppD9IO0dk6hC+qFK1X12Gmjfi2M7Mp4hVMYHL86RqTt+ZtPRDT
-----END RSA PRIVATE KEY-----

Encrypted: kB1lr7vx1ggVHJ8dCl3NrM9wCJq6SN5gwBP1ZRLEf+HvB8Tdojh3oKOPt781l5oZr9ESZOUZNBZ2eoml6TQ0v06rdvT1VZC7JMnpCMbizJ2gtflUDTugaOU2QNub9M1ypltdDkORZy5F2hJrSSUX1Z1AaFUPQa1GCtTyamFMDT1JkvMmCX+AOogX/bE7N/eMnivXHAv+FfmC8tyKiTzKX1ZhrKH2s/zCLKCxrbK/x625UgPvqn3RsH3OcEtGwTilpebMIDlHEmE7I1t1OUl1G8364YjcqvuFigbqlbpgKv9V50kL5hGGHf/JUBujw2BXO9gSb5RImmZfnNgSMqA2WQ==

Decrypted Message: b'This is your secret'

Popular posts from this blog

Learn Java 8 streams with an example - print odd/even numbers from Array and List

Java Stream API - How to convert List of objects to another List of objects using Java streams?

Registration and Login with Spring Boot + Spring Security + Thymeleaf

Java, Spring Boot Mini Project - Library Management System - Download

ReactJS, Spring Boot JWT Authentication Example

Spring Boot + Mockito simple application with 100% code coverage

Top 5 Java ORM tools - 2024

Java - Blowfish Encryption and decryption Example

Spring boot video streaming example-HTML5

Google Cloud Storage + Spring Boot - File Upload, Download, and Delete