Cryptography ============ Cryptography ------------ `Cryptography `_ is an actively developed library that provides cryptographic recipes and primitives. It supports Python 2.6-2.7, Python 3.2+ and PyPy. Cryptography is divided into two layers of recipes and hazardous materials (hazmat). The recipes layer provides simple API for proper symmetric encryption and the hazmat layer provides low-level cryptographic primitives. Installation ~~~~~~~~~~~~ .. code-block:: console $ pip install cryptography Example ~~~~~~~ Example code using high level symmetric encryption recipe: .. code-block:: python from cryptography.fernet import Fernet key = Fernet.generate_key() cipher_suite = Fernet(key) cipher_text = cipher_suite.encrypt(b"A really secret message. Not for prying eyes.") plain_text = cipher_suite.decrypt(cipher_text) PyCrypto -------- `PyCrypto `_ is another library, which provides secure hash functions and various encryption algorithms. It supports Python version 2.1 through 3.3. Installation ~~~~~~~~~~~~ .. code-block:: console $ pip install pycrypto Example ~~~~~~~ .. code-block:: python from Crypto.Cipher import AES # Encryption encryption_suite = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456') cipher_text = encryption_suite.encrypt("A really secret message. Not for prying eyes.") # Decryption decryption_suite = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456') plain_text = decryption_suite.decrypt(cipher_text)