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.
# 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)