Как написать криптор?

alekov

New member
24.02.2023
1
0
BIT
0
Криптор для шифрования файлов, скиньте простенький пример, желательно на питоне, пж
 

Habibas

New member
13.03.2023
3
2
BIT
0
Python:
from Crypto.Cipher import AES
import os

def encrypt_file(key, filename):
    chunksize = 64 * 1024
    outputFile = "(encrypted)"+filename
    filesize = str(os.path.getsize(filename)).zfill(16)
    IV = os.urandom(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_file(key, filename):
    chunksize = 64 * 1024
    outputFile = filename[11:]

    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)

key = b'Sixteen byte key'
filename = 'example.txt'
encrypt_file(key, filename)

encrypted_filename = "(encrypted)example.txt"
decrypt_file(key, encrypted_filename)

Обратите внимание, что этот код шифрует файл, используя AES-256 CBC шифрование, который требует ключа длиной 16 байт. В примере мы используем ключ длиной 16 байт, заданный в переменной key. Если вы хотите использовать свой ключ, замените его на нужный. Кроме того, обратите внимание на то, что файлы называются по-разному для шифрования и дешифрования, чтобы избежать перезаписи оригинального файла.
 
  • Нравится
Реакции: A100100 и alekov
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!