2 Best Python Data Encryption Libraries

Encryption is a tricky subject in any language. It is better to choose a library with active maintenance.

There are 2 best Python encryption libraries as following.

Table of Contents


cryptography includes both high level recipes and low level interfaces to common cryptographic algorithms such as symmetric ciphers, message digests, and key derivation functions.

Encrypt and decrypt text with cryptography’s high level symmetric encryption recipe:

from cryptography.fernet import Fernet

key = Fernet.generate_key()
f = Fernet(key)
encrypted_text = f.encrypt(b"This is a secret text message that needs to be hidden.")
decrypted_text = f.decrypt(encrypted_text )

Encrypt and decrypt using AES

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
import os

key = os.urandom(32)
iv = os.urandom(16)
cipher = Cipher(algorithms.AES(key), modes.CBC(iv))
encryptor = cipher.encryptor()
ct = encryptor.update(b"This is a secret text") + encryptor.finalize()
decryptor = cipher.decryptor()
plain_text = decryptor.update(ct) + decryptor.finalize()


PyCryptodome is a self-contained Python package of low-level cryptographic primitives. It is a fork of PyCrypto, which brings a lot of enhancements with respect to the last official version of PyCrypto (2.6.1).

PyCryptodome supports Python 2.6 and 2.7, Python 3.4 and newer, and PyPy.

Encrypt data with AES:

from Crypto.Random import get_random_bytes

key = get_random_bytes(16)
cipher = AES.new(key, AES.MODE_EAX)
ciphertext, tag = cipher.encrypt_and_digest(data)

file_out = open("encrypted.bin", "wb")
[ file_out.write(x) for x in (cipher.nonce, tag, ciphertext) ]

Generate RSA key:

from Crypto.PublicKey import RSA

secret_code = "Unguessable"
key = RSA.generate(2048)
encrypted_key = key.export_key(passphrase=secret_code, pkcs=8,

file_out = open("rsa_key.bin", "wb")


Leave a Comment

Your email address will not be published.