Python шифрует большой файл

Я пробовал все выше, ничего не работает. Поэтому мне пришлось сделать свой ImageView static public static ImageView texture;, а затем texture = (ImageView) findViewById(R.id.texture_back);, я не думаю, что это хороший подход, хотя это действительно сработало для моего случая :)

0
задан vahdet 18 March 2019 в 11:25
поделиться

1 ответ

Чтобы расширить мой комментарий: вы не хотите читать файл в память сразу, а обрабатывать его небольшими блоками.

С любым производственным шифром (, который XOR определенно не является ), вам также придется иметь дело с заполнением выходного файла, если исходные данные не кратны размеру блока шифра. Этот скрипт не имеет с этим дело, отсюда и утверждение о размере блока.

Кроме того, мы больше необратимо (ну, кроме того факта, что шифр XOR фактически является обратимым), перезаписывая файлы их зашифрованными версиями. (Если вы хотите сделать это, лучше добавить код для удаления оригинала, а затем переименовать зашифрованный файл на его место. Таким образом, вы не получите полузаписанный, полушифрованный файл. )

Также я убрал бесполезную кодировку Base64.

Но - не используйте этот код для чего-либо серьезного. Пожалуйста, не надо. Друзья не друзья раскручивают свои собственные крипто.

from Crypto.Cipher import XOR
import os


def encrypt_file(cipher, source_file, dest_file):
    # this toy script is unable to deal with padding issues,
    # so we must have a cipher that doesn't require it:
    assert cipher.block_size == 1

    while True:
        src_data = source_file.read(1048576)  # 1 megabyte at a time
        if not src_data:  # ran out of data?
            break
        encrypted_data = cipher.encrypt(src_data)
        dest_file.write(encrypted_data)


def insecurely_encrypt_directory(enpath, key):
    for filename in os.listdir(enpath):
        file_path = os.path.join(enpath, filename)
        dest_path = file_path + ".encrypted"
        with open(file_path, "rb") as source_file, open(dest_path, "wb") as dest_file:
            cipher = XOR.new(key)
            encrypt_file(cipher, source_file, dest_file)
0
ответ дан AKX 18 March 2019 в 11:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: