Ниже приведен фрагмент кода, который я написал, используя модуль Pycrypto Python lib для шифрования и дешифрования файла.
Я могу зашифровать файл, но логика decryption кажетсябыть не на высоте.
На первом этапе я шифрую текст файла, который "infile1.txt", который работает, как ожидалось.На втором этапе вывод «verifyile1.txt» не показывает расшифрованный текст.
import os, random, struct
from Crypto.Cipher import AES
from Crypto import Random
import hashlib
password = 'kitty'
key = hashlib.sha256(password.encode('utf-8')).digest()
%%writefile infile1.txt
ONE on FIRST
TWO on SECOND
THREE on THIRD
fsz = os.path.getsize('infile1.txt')
iv = Random.new().read(16)
encryptor = AES.new(key, AES.MODE_CBC, iv)
sz = 2048
#Encryptor Code
with open('encfile1.txt', 'wb') as fout:
fout.write(struct.pack('<Q', fsz))
fout.write(iv)
with open('infile1.txt') as fin:
while True:
data = fin.read(sz)
n = len(data)
if n == 0:
break
elif n % 16 != 0:
data += ' ' * (16 - n % 16)
encd = encryptor.encrypt(data)
fout.write(encd)
#Decryptor decode
with open('encfile1.txt','rb') as fin:
fsz = struct.unpack('<Q', fin.read(struct.calcsize('Q')))[0]
iv = fin.read(16)
decryptor = AES.new(key, AES.MODE_CBC, iv)
with open('verfile1.txt', 'wb') as fout:
while True:
data = fin.read(sz)
n = len(data)
if n == 0:
break
fout.write(decryptor.decrypt(data))
fout.truncate(fsz)