2
0

encyption.py 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. from codecs import encode
  2. import rsa
  3. from create_keys import get_keys, get_private_key, get_symmetric_key
  4. from cryptography.fernet import Fernet
  5. from cryptography.hazmat.backends import default_backend
  6. from cryptography.hazmat.primitives import hashes, serialization
  7. from cryptography.hazmat.primitives.asymmetric import padding
  8. def encrypt_data(contract, block_string):
  9. symmetric_key = get_symmetric_key(contract)
  10. pubkey = get_keys(contract)
  11. chiper = Fernet(symmetric_key)
  12. data = str(chiper.encrypt(block_string))[2:-1]
  13. encrypted_key = str(rsa.encrypt(symmetric_key,pubkey))[2:-1]
  14. # encrypted_key = rsa.encrypt(symmetric_key,pubkey)
  15. print('ENCRYPTED KEY: ', type(encrypted_key), encrypted_key)
  16. return data, encrypted_key
  17. def decrypt_data(name, t):
  18. private_key = get_private_key(name)
  19. en_key = encode(t.encrypted_key.encode().decode('unicode_escape'),"raw_unicode_escape")
  20. key = rsa.decrypt(en_key, private_key)
  21. cipher = Fernet(key)
  22. decrypted_data = cipher.decrypt(bytes(t.data, 'utf-8'))
  23. print(decrypted_data)
  24. return decrypted_data.decode('utf8').replace("'", '"')