cryptography
is a package which provides cryptographic recipes and primitives to Python developers. Our goal is for it to be your "cryptographic standard library". It supports Python 2.7, Python 3.5+, and PyPy 5.4+.
cryptography
includes both high level recipes and low level interfaces to common cryptographic algorithms such as symmetric ciphers, message digests, and key derivation functions. For example, to encrypt something with cryptography
's high level symmetric encryption recipe:
>>> from cryptography.fernet import Fernet
>>> # Put this somewhere safe!
>>> key = Fernet.generate_key()
>>> f = Fernet(key)
>>> token = f.encrypt(b"A really secret message. Not for prying eyes.")
>>> token
'...'
>>> f.decrypt(token)
'A really secret message. Not for prying eyes.'
You can find more information in the documentation.
You can install cryptography
with:
$ pip install cryptography
In this fork ~~~~~~~~~~
>>> from cryptography.fernet import Fernet
>>> # If you want the same messages to be encrypted equally always
>>> # Put the key, the seed and the IV somewhere safe!
>>> import os
>>> key = Fernet.generate_key()
>>> seed = 12345
>>> iv = os.urandom(16)
>>> f = Fernet(key)
>>> token = f.encrypt("A really secret message. Not for prying eyes.", seed = seed, iv = iv)
>>> token
'...'
>>> f.decrypt(token)
'A really secret message. Not for prying eyes.'
In this clone, I made a small modification to the original code that allows equal messages to be encrypted equally. In a specific situation, it was useful for me and maybe it is also for other people. If you want, you can just modify the fernet.py file or install it from my github.
$ pip install git+https://github.com/wellingtonf-souza/cryptography.git
If you run into bugs, you can file them in our issue tracker.
We maintain a cryptography-dev mailing list for development discussion.
You can also join #cryptography-dev
on Freenode to ask questions or get involved.
Need to report a security issue? Please consult our security reporting documentation.