Шифрование и дешифрование с использованием Pycrypto - Python - PullRequest
0 голосов
/ 21 декабря 2018

Ниже приведен фрагмент кода, который я написал, используя модуль 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)
...