Как зашифровать файл python

Обновлено: 02.07.2024

Всем привет. Сегодня мы с вами напишем программу для шифрования файлов и директорий на Python.

Существует множество опасностей для ваших данных, будь то взлом или потеря телефона, кража личных архивов фотографий, номеров кредитных карт или какой-либо интеллектуальной собственности. И конечно же я не говорю про материалы сохранённые на вашем компьютере, которые могут заинтересовать определённые структуры. Думаю нет смысла рассказывать в какое время мы живём и о пользе шифрования в целом.

Вариантов как зашифровать файлы достаточно много и сегодня мы рассмотрим процесс на примере библиотеки pyAesCrypt которая использует симметричный алгоритм шифрования.

Пишем скрипт шифрования

Создаём файл для шифрования, я назову его encryption.py и импортируем нужные нам модули:

Нам понадобятся две функции, одна будет шифровать файлы, а вторая ходить по директориям по указанному нами пути и искать их.

Напишем функцию шифрования. В качестве параметров она будет принимать файл и пароль:

Теперь напишем функцию обхода по директориям. То есть если по указанному нами пути будут встречаться другие директории, наш шифровальщик будет сканировать их на наличие файлов и зашифровывать всё что видит. Её параметрами будут путь до директории и пароль для шифрования:

С помощью функции input() запросим наш пароль и вызовем функцию walking_by_dirs():

password = input("Введите пароль для шифрования: ")
walking_by_dirs("path", password)

Пишем скрипт дешифровки

Перед испытаниями, давайте сразу создадим файл для дешифровки, decryption.py . Он на 99% будет аналогичен.

Копируем код. Меняем название функции, метод шифрования, на метод расшифровки. Не забываем в функции walking_by_dirs() так же заменить вызываемую функцию:

password = input("Введите пароль для расшифровки: ")
walking_by_dirs("path", password)

Если вы например шифруете файлы на удалённой машине, то неплохо бы удалить за собой рабочие скрипты. Мы можем сделать это c помощью модуля sys и следующего кода:

Сохраните свои исполняемые файлы если будете использовать код os.remove(str(sys.argv[0])) , иначе файлы будут удалены безвозвратно.

Как видите, всё просто. Наши скрипты готовы, Enjoy!

На канале Youtube канале PYTHONTODAY ты найдёшь видеоуроки:

  • - по созданию ботов
  • - парсингу сайтов
  • - приложений на смартфон
  • - машинному обучению и big data с нуля

Освой сетевую безопасность, и задавай вопросы в клубе.

Вступай в клуб Python разработчиков!

Спасибо, что дочитали до конца. Вы меня очень поддержите, если поставите "Лайк", оставите комментарий или ПОДПИШИТЕСЬ на мой канал :)

Шифрование — это процесс кодирования информации, позволяющий только авторизованным сторонам получить к ней доступ.

Хотим поделиться с вами, как можно шифровать файлы, используя Python с помощью библиотеки cryptography, построенной на основе алгоритма AES. Возможно кому-то, также как и нам, такой способ покажется более простым для шифрования файла с данными.

В данном примере используется симметричное шифрование. Тот же ключ, который применяется для шифрования данных, можно использовать для их дешифрования.

Итак, установим библиотеку cryptography:

Открываем новый файл Python:

Создаем ключ и сохраняем его в файл, например, crypto.key:

Внимание! Сгенерированный ключ crypto.key необходимо хранить в надежном месте. В случае его потери невозможно будет расшифровывать данные, которые были зашифрованы этим ключом.

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

Создадим функцию для загрузки этого ключа:

Далее понадобится создать функцию для шифрования файла:

После инициализации объекта Fernet с заданным ключом прочитаем этот файл:

После этого, зашифровываем данные:

Запишем зашифрованный файл с тем же именем, чтобы он переопределил оригинал:

Теперь создадим функцию расшифровки файла:

И, наконец, проверим это на конкретном файле, разместив шифруемый файл и ключ в текущем каталоге.

Например, для шифрования файла с именем ‘report.csv’вызываем созданную функцию encrypt():

После шифрования будет видно, что размер файла ‘report.csv’увеличился, и мы не сможем прочитать содержимое этого файл.

Чтобы вернуть файл ‘report.csv’в исходную форму, вызовем функцию decrypt ():

Получаем исходный файл ‘report.csv’вместо ранее зашифрованного.

Обратите внимание на то, что при применении данного кода, размер файла не должен превышать объем оперативной памяти.

Применение этого несложного кода Python даст возможность надежно защитить данные от несанкционированного доступа к ним и соблюсти требования кибербезопасности при работе с критически важной информацией. При этом установки какого-либо специального программного обеспечения не требуется.

Favorite

Добавить в избранное (1 оценок, среднее: 5,00 из 5)

Python 3 - Обзор

К риптография, наука о шифрах, стала реальностью с помощью кодирования. Мы не можем решить, какой язык программирования лучше или хуже другого. Однако выбор подходящей криптографической библиотеки имеет решающее значение.

Установка библиотеки криптографии

Шифрование текста

Импорт Fernet

После успешной установки модуль fernet импортируется из библиотеки. Функция берет на себя ответственность как за шифрование, так и за расшифровку данных. Для этого создайте файл python и импортируйте модуль fernet из криптографической библиотеки следующим образом:

Генерация ключа

Теперь сгенерируйте ключ аутентификации, определив функцию или просто используя генератор fernet в Python. Функция Fernet.generate_key() сгенерирует ключ для шифрования и дешифрования. Добавьте в код следующую строку:

Теперь будет создан экземпляр класса Fernet с использованием сгенерированного ключа.

Шифрование текстовой строки

Теперь для шифрования текста достаточно нескольких строк кода. Добавьте следующие строки, чтобы зашифровать текст.

Выполнение вышеуказанного кода Python выводит неразборчивую строку буквенно-цифровых символов, как показано ниже. Это простейшая форма шифрования текстовой строки с помощью библиотеки Cryptography в Python. Во-первых, он кодирует строку, чтобы затем зашифровать ее с помощью рецепта криптографического шифрования.

Расшифровка текстовой строки

После шифрования строки с помощью метода шифрования хорька расшифруйте текст обратно в исходную форму. Успешное дешифрование гарантирует, что получатель может без проблем расшифровать информацию и получить к ней доступ.

В приведенных выше строках кода используется тот же экземпляр Fernet, который использует ключ, сохраненный в памяти программы, для дешифрования. Функция fernet.decrypt() возвращает закодированную строку после расшифровки, как она была закодирована до шифрования. Теперь функция декодирования возвращает закодированную строку в исходную форму.

Шифрование файлов

Как и при шифровании текста, импортируйте модуль fernet для шифрования файлов и генерации ключей. Импортируйте модуль fernet из библиотеки Cryptography.

Генерация ключей

Как показано выше, используйте функцию генератора ключей Fernet для генерации ключа. Несмотря на то, что это лучший подход для проверки шифрования и дешифрования коротких текстов, он практически бесполезен, поскольку теряет ключ навсегда после завершения программы. Следовательно, рекомендуется безопасно хранить ключ в файле, чтобы его можно было прочитать и использовать в любое время.

Включите это, определив функцию генератора ключей в коде, который записывает ключ в файл. Это также можно сделать, сохранив ключ Fernet в текстовом файле. Создайте ключ и сохраните его в файле для использования в будущем.

Этот код сгенерирует случайную буквенно-цифровую строку и сохранит ее в файле keyfile.key.

Шифрование

Используйте следующую строку кода, чтобы прочитать уже сохраненный ключ для шифрования файла.

Использование ключа для экземпляра fernet:

Откройте и прочтите файл, который нужно зашифровать, и зашифруйте данные в файле с помощью шифрования Fernet:

Теперь откройте файл в режиме записи и запишите зашифрованные данные обратно:

При выполнении приведенного выше кода исходные данные файла заменяются массивом буквенно-цифровых строк.

Расшифровка файла

Снова используйте модуль Fernet, чтобы расшифровать файл с тем же ключом. Следующий код сначала считывает данные из зашифрованного файла и восстанавливает их в исходной форме с помощью функции дешифрования.

Заключение

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.


Что такое криптография?

Криптография защищает данные и переписку с помощью кодов. Таким образом, она может быть интерпретирована и доступна только определенным лицам, которым предназначена информация.

Эти алгоритмы генерируют криптографические ключи, цифровую подпись, аутентификацию для защиты данных, просмотр веб-страниц в Интернете и конфиденциальные транзакции, такие как транзакции по кредитным и дебетовым картам.

Каковы особенности хороших алгоритмов криптографии?

Типы криптографии

Реализация криптографии на Python с FERNET

Фреймворк, который я впервые представлю сегодня, называется Fernet. Это метод шифрования с симметричным ключом.

1. Установите FERNET

Мы можем просто использовать Python pip для установки модуля FERNET в нашей системе:

2. Создайте ключи шифрования.

Мы можем использовать функцию Фернет напрямую:

Мы также можем создать свой собственный ключ, используя функцию random

А затем мы вызовем функцию FERNET с нашим key:

3. Шифрование ваших данных

Теперь мы готовы зашифровать наши данные:

Как видно из полученного токена:

Без ключа приведенные выше данные полностью неразборчивы. Таким образом, злоумышленник, пытающийся получить информацию, застрянет без ключа.

4. Использование паролей для криптографии в Python

Мы также можем использовать определенные пароли вместо сохранения случайно сгенерированных токенов.

Итак, для этого нам нужно углубиться в примитивы, что немного опасно и может использоваться неправильно.

Они требуют принятия решений и глубокого знания действующих криптографических концепций.

Но следуйте приведенному ниже коду, и все будет в порядке:

Теперь мы указываем пароль и генерируем случайную последовательность байтов:

Затем мы используем kdf для итерации 100k раз с использованием алгоритма хеширования, такого как SHA256, для получения ключа:

Нам нужно использовать этот ключ для шифрования и дешифрования.

5. Расшифровка текста

Читайте также: