xxxxxxxxxx
40bc4a0c553d82cec8ff90ef8b5f3d6bc2476ba829e8a753cf5f98defd001bf6
xxxxxxxxxx
The point of a hash like sha256 is that it is supposed to be a one way function
(although the existence of true one way functions is still an open question,
see http://en.wikipedia.org/wiki/One-way_function).
The ideal cryptographic hash function has four main properties:
1. It is easy to compute the hash value for any given message
2. It is infeasible to generate a message that has a given hash
3. It is infeasible to modify a message without changing the hash
4. It is infeasible to find two different messages with the same hash.
xxxxxxxxxx
# encrypting
from cryptography.fernet import Fernet
message = "my deep dark secret".encode()
f = Fernet(key)
encrypted = f.encrypt(message)
# decrypting
from cryptography.fernet import Fernet
encrypted = b"...encrypted bytes..."
f = Fernet(key)
decrypted = f.decrypt(encrypted)