Как зашифровать Python файл: простое руководство для начинающих

Для шифрования Python файла вы можете использовать модуль cryptography.

Ниже приведен пример кода, который использует AES-CTR для шифрования и расшифрования файла:

# Установка модуля cryptography
!pip install cryptography

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend

def encrypt_file(file_path, key):
    with open(file_path, 'rb') as file:
        plaintext = file.read()
        
    # Генерация случайного инициализирующего вектора
    iv = os.urandom(16)
    
    # Создание шифратора
    cipher = Cipher(algorithms.AES(key), modes.CTR(iv), backend=default_backend())
    encryptor = cipher.encryptor()
    
    # Шифрование данных
    ciphertext = encryptor.update(plaintext) + encryptor.finalize()
    
    # Сохранение зашифрованного файла
    with open(file_path + '.encrypted', 'wb') as encrypted_file:
        encrypted_file.write(iv + ciphertext)
    
def decrypt_file(file_path, key):
    with open(file_path, 'rb') as encrypted_file:
        encrypted_data = encrypted_file.read()
        
    # Извлечение инициализирующего вектора
    iv = encrypted_data[:16]
    ciphertext = encrypted_data[16:]
    
    # Создание дешифратора
    cipher = Cipher(algorithms.AES(key), modes.CTR(iv), backend=default_backend())
    decryptor = cipher.decryptor()
    
    # Расшифровка данных
    plaintext = decryptor.update(ciphertext) + decryptor.finalize()
    
    # Сохранение расшифрованного файла
    with open(file_path[:-10], 'wb') as decrypted_file:
        decrypted_file.write(plaintext)

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

Функция decrypt_file принимает путь к зашифрованному файлу и ключ для расшифровки. Она сначала читает содержимое зашифрованного файла, извлекает инициализирующий вектор и шифрованные данные, создает дешифратор с использованием алгоритма AES-CTR, и затем расшифровывает данные и сохраняет расшифрованный файл.

Детальный ответ

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

В этой статье мы поговорим о способах шифрования Python файлов и представим вам несколько примеров кода.

1. Шифрование с использованием сторонних библиотек

Первый метод - это использование сторонних библиотек, таких как Crypto. "Crypto" является популярной библиотекой шифрования в Python.


    # Установка библиотеки "Crypto"
    !pip install pycrypto
    

Далее рассмотрим пример кода, демонстрирующий процесс шифрования и расшифровки файла:


    from Crypto.Cipher import AES

    def encrypt_file(file_path, key):
        aes = AES.new(key, AES.MODE_ECB)
        with open(file_path, 'rb') as file:
            data = file.read()
        encrypted_data = aes.encrypt(data)
        with open(file_path + '.enc', 'wb') as file_encrypted:
            file_encrypted.write(encrypted_data)

    def decrypt_file(file_path, key):
        aes = AES.new(key, AES.MODE_ECB)
        with open(file_path, 'rb') as file_encrypted:
            encrypted_data = file_encrypted.read()
        decrypted_data = aes.decrypt(encrypted_data)
        with open(file_path + '.dec', 'wb') as file_decrypted:
            file_decrypted.write(decrypted_data)

    # Пример использования
    key = b'SuperSecretKey123'
    encrypt_file('file.txt', key)
    decrypt_file('file.txt.enc', key)
    

В этом примере используется алгоритм шифрования AES с режимом ECB. Вы можете выбрать другой алгоритм и режим шифрования в зависимости от ваших потребностей.

2. Простое шифрование с использованием base64

Еще один простой способ зашифровать файл - это использование кодирования base64.


    import base64

    def encrypt_file_base64(file_path):
        with open(file_path, 'rb') as file:
            data = file.read()
        encoded_data = base64.b64encode(data)
        with open(file_path + '.enc', 'wb') as file_encrypted:
            file_encrypted.write(encoded_data)

    def decrypt_file_base64(file_path):
        with open(file_path, 'rb') as file_encrypted:
            encoded_data = file_encrypted.read()
        decrypted_data = base64.b64decode(encoded_data)
        with open(file_path + '.dec', 'wb') as file_decrypted:
            file_decrypted.write(decrypted_data)

    # Пример использования
    encrypt_file_base64('file.txt')
    decrypt_file_base64('file.txt.enc')
    

В этом простом примере мы используем функции b64encode() и b64decode() из модуля base64 для шифрования и расшифровки содержимого файла.

3. Зашифрование с помощью собственного алгоритма

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


    def encrypt_file_custom(file_path):
        with open(file_path, 'rb') as file:
            data = file.read()
        # Ваш собственный алгоритм шифрования
        # ...

    def decrypt_file_custom(file_path):
        with open(file_path, 'rb') as file_encrypted:
            encrypted_data = file_encrypted.read()
        # Ваш собственный алгоритм расшифровки
        # ...

    # Пример использования
    encrypt_file_custom('file.txt')
    decrypt_file_custom('file.txt.enc')
    

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

4. Дополнительные меры безопасности

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

Использование пароля:


    import getpass

    password = getpass.getpass('Введите пароль: ')

    # Проверка пароля
    if password == 'my_password':
        # Работа с зашифрованными файлами
        ...
    else:
        print('Неверный пароль!')
    

Защита файловой системы на уровне операционной системы:

Вы также можете использовать файловую систему с шифрованием на уровне операционной системы, такую как Bitlocker для Windows или FileVault для macOS. Это дополнительный уровень защиты для ваших файлов и папок.

Заключение

В этой статье мы рассмотрели несколько способов шифрования Python файлов. Мы представили вам примеры кода, использующие сторонние библиотеки, кодирование base64 и создание собственного алгоритма шифрования.

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

Видео по теме

Шифрование и дешифрование файлов в Python

Шифруем файлы с помощью Python

Как защитить свой код на Python от ВЗЛОМА

Похожие статьи:

Как создать чат-бота на Python: пошаговое руководство для начинающих

🔐 Как закончить ввод в питоне без ошибок? 🎯 Простые шаги и советы для успешного завершения ввода данных в Python!

Как переименовать все файлы в папке сразу по порядку с помощью Python

Как зашифровать Python файл: простое руководство для начинающих

😎 Как вычислить двузначное число в Питоне: простые методы и советы 💻

Как задать sin в Питоне: простой способ объяснения

Как подключить библиотеку в VS Code Python