I'm playing with encryption and have come across this cryptography.fernet.InvalidToken
error, which obviously means that the tokens don't match. The encrypter works fine, but the error is raised when running the decrypter. I can't figure out what's wrong with my code.
Any help is appreciated!
Encrypter
from cryptography.fernet import Fernet
class Encrypter:
def __init__(self,key,data):
self.key = key
self.data = data
def generate_key(self):
key = Fernet.generate_key()
return key
def create_key_file(self):
with open('key.key', 'wb') as keyfile:
keyfile.write(self.generate_key())
def encrypt_file(self):
fernet = Fernet(self.generate_key())
with open('sample_file.csv', 'rb') as tf:
tf_bytes = tf.read()
tf_bytes_enc = fernet.encrypt(tf_bytes)
with open('sample_file.csv', 'wb') as tf:
tf.write(tf_bytes_enc)
key_obj = Encrypter(key='key.key',data='sample_file.csv')
key_obj.create_key_file()
key_obj.encrypt_file()
Decrypter
class Decrypter:
def __init__(self,key,data):
self.key = key
self.data = data
def get_key(self):
with open('key.key', 'rb') as keyfile:
key = keyfile.read()
return key
def open_encrypted_file(self):
with open('sample_file.csv', 'rb') as tf:
tf_bytes = tf.read()
fernet = Fernet(self.get_key())
tf_bytes_dec = fernet.decrypt(tf_bytes)
return tf_bytes_dec
def decrypt_file(self):
with open('sample_file.csv', 'wb') as tf:
tf.write(self.open_encrypted_file())
return tf
key_obj = Decrypter(key='key.key',data='sample_file.csv')
key_obj.get_key()
key_obj.decrypt_file()