Basi c Программа шифрования / дешифрования, использующая криптографический модуль, сбой при расшифровке - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь использовать модуль криптографии в Python для:

  1. принять файл,

  2. зашифровать его, сохранить зашифрованные данные для перезаписи файла

  3. принимают зашифрованный файл

  4. расшифровывают его и записывают обратно в тот же файл

Закомментировав часть моей функции расшифровки, приведенной ниже, я смог устранить неполадки и обнаружить, что проблема возникает, когда я снова открываю файл и начинаю читать зашифрованные данные. Когда я снова открываю и читаю его, он, кажется, ничего не возвращает (как вы можете видеть по выражению print в этой функции. Я использовал текстовый файл со случайной строкой в ​​нем. Кто-нибудь знает, где я могу ошибаться? ?

#!/usr/bin/env python3

try:
    import os
    from cryptography.fernet import Fernet
except ImportError as e:
    print(f"Import error: {e}")

key = Fernet.generate_key() #generate key
fernet = Fernet(key)
keyfile = open('key.key' , 'wb')
keyfile.write(key) #write it to a file to save it
keyfile.close()


def encrypt_a_file():
    with open('test.txt', 'wb') as output_f:
        data = open('test.txt', 'rb').read() # read data from a file
        encrypted = fernet.encrypt(data) #encrypt it
        print(encrypted)
        output_f.write(encrypted) # write encrypted data to the file


def decrypt_a_file():
    with open('test.txt', 'wb') as decrypted_f:
        data = open('test.txt','rb').read() # read data from the file
        print(data)
        #data = encrypted_f.read() # read data from the file
        #decrypted = fernet.decrypt(data) #decrypt it
        #decrypted_f.write(decrypted) # write decrypted data back to the file


def main():
    encrypt_a_file()
    decrypt_a_file()

main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...