from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import serialization from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.asymmetric import padding from cryptography.fernet import Fernet import rsa from create_keys import get_keys, get_symmetric_key, get_private_key def encrypt_data(contract, block_string): symmetric_key = get_symmetric_key(contract) pubkey = get_keys(contract) chiper = Fernet(symmetric_key) data = str(chiper.encrypt(block_string)) encrypted_key = str(rsa.encrypt(symmetric_key,pubkey)) return data, encrypted_key def decrypt_data(name, t): print('DATA OF TRANSACTION: ', type(t.data), t.data) private_key = get_private_key(name) en_key = t.encrypted_key print('ENCRYPTED KEY: ', type(en_key), en_key) key = rsa.decrypt(en_key, private_key) cipher = Fernet(key) decrypted_data = cipher.decrypt(t.data) print(decrypted_data.decode(), t.data)