Я нашел в сети некоторый код, который должен шифровать и дешифровать файлы, но всякий раз, когда я его использую, он шифрует файл, а затем при дешифровании файла просто удаляет файл при его дешифровании
Программа выдает разные результаты, когда текстовый документ, на котором я тестирую его, пуст или содержит слова после того, как файл зашифрован, поэтому я знаю, что удаление происходит, когда файл расшифровывается, я просто не знаю где в коде это происходит.
Вот и вся программа
import os
from Crypto.Cipher import AES
from Crypto.Hash import SHA256
from Crypto import Random
def encrypt(key, filename):
chunksize = 64*1024
outputFile = filename
filesize = str(os.path.getsize(filename)).zfill(16)
IV = Random.new().read(16)
encryptor = AES.new(key, AES.MODE_CBC, IV)
with open(filename, 'rb') as infile:
with open(outputFile, 'wb') as outfile:
outfile.write(filesize.encode('utf-8'))
outfile.write(IV)
while True:
chunk = infile.read(chunksize)
if len(chunk) == 0:
break
elif len(chunk) % 16 != 0:
chunk += b' ' * (16 - (len(chunk) % 16))
outfile.write(encryptor.encrypt(chunk))
def decrypt(key, filename):
chunksize = 64*1024
outputFile = filename
with open(filename, 'rb') as infile:
filesize = int(infile.read(16))
IV = infile.read(16)
decryptor = AES.new(key, AES.MODE_CBC, IV)
with open(outputFile, 'wb') as outfile:
while True:
chunk = infile.read(chunksize)
if len(chunk) == 0:
break
outfile.write(decryptor.decrypt(chunk))
outfile.truncate(filesize)
def getKey(password):
hasher = SHA256.new(password.encode('utf-8'))
return hasher.digest()
password = 'hello'
filename = r'C:\Users\user\Desktop\test.txt'
encrypt(getKey(password), filename)
print("encrypted!")
decrypt(getKey(password), filename)
print("Derypted!.")
Я бы хотел сохранить файл, который я пытаюсь расшифровать, нетронутым.