Шифрование и дешифрование файлов с помощью Python
Шифрование — это процесс кодирования информации, позволяющий только авторизованным сторонам получить к ней доступ.
Хотим поделиться с вами, как можно шифровать файлы, используя Python с помощью библиотеки cryptography, построенной на основе алгоритма AES. Возможно кому-то, также как и нам, такой способ покажется более простым для шифрования файла с данными.
В данном примере используется симметричное шифрование. Тот же ключ, который применяется для шифрования данных, можно использовать для их дешифрования.
Итак, установим библиотеку cryptography:
Открываем новый файл Python:
Создаем ключ и сохраняем его в файл, например, crypto.key:
Внимание! Сгенерированный ключ crypto.key необходимо хранить в надежном месте. В случае его потери невозможно будет расшифровывать данные, которые были зашифрованы этим ключом.
Этот ключ уникален, и нет необходимости генерировать ключ каждый раз, когда потребуется зашифровать что-либо.
Создадим функцию для загрузки этого ключа:
Далее понадобится создать функцию для шифрования файла:
После инициализации объекта Fernet с заданным ключом прочитаем этот файл:
После этого, зашифровываем данные:
Запишем зашифрованный файл с тем же именем, чтобы он переопределил оригинал:
Теперь создадим функцию расшифровки файла:
И, наконец, проверим это на конкретном файле, разместив шифруемый файл и ключ в текущем каталоге.
Например, для шифрования файла с именем ‘report.csv’вызываем созданную функцию encrypt():
После шифрования будет видно, что размер файла ‘report.csv’увеличился, и мы не сможем прочитать содержимое этого файл.
Чтобы вернуть файл ‘report.csv’в исходную форму, вызовем функцию decrypt ():
Получаем исходный файл ‘report.csv’вместо ранее зашифрованного.
Обратите внимание на то, что при применении данного кода, размер файла не должен превышать объем оперативной памяти.
Применение этого несложного кода Python даст возможность надежно защитить данные от несанкционированного доступа к ним и соблюсти требования кибербезопасности при работе с критически важной информацией. При этом установки какого-либо специального программного обеспечения не требуется.