0Pricing
Cryptology Academy · Урок

Практическое шифрование файлов с помощью AES

Используйте OpenSSL и Python для шифрования и расшифрования настоящих файлов с AES

«Практическое шифрование файлов с помощью AES» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Добро пожаловать

Теория встречается с практикой. В этом уроке мы зашифруем и расшифруем реальные файлы с помощью AES-GCM в Python — рекомендуемого режима аутентифицированного шифрования.

Почему AES-GCM?

AES-GCM обеспечивает аутентифицированное шифрование с ассоциированными данными (AEAD). Он шифрует AND создает тег аутентификации размером 16 байт. Любое изменение данных обнаруживается до расшифрования.

Компоненты AES-GCM

Входные данные: ключ размером 32 байта, случайный одноразовый номер размером 12 байт, открытый текст и необязательные ассоциированные данные (AAD). Выходные данные: шифротекст и тег аутентификации размером 16 байт. Одноразовый номер должен быть уникальным для каждого шифрования.

Установка библиотеки cryptography

pip install cryptography Библиотека cryptography для Python от PyCA — рекомендуемая криптографическая библиотека. Она использует OpenSSL и предоставляет как высокоуровневые рецепты, так и низкоуровневые примитивы hazmat.

Шифрование AES-GCM в Python

from cryptography.hazmat.primitives.ciphers.aead import AESGCM import os key = AESGCM.generate_key(bit_length=256) nonce = os.urandom(12) aad = b'file_version_1' aesgcm = AESGCM(key) ciphertext = aesgcm.encrypt(nonce, plaintext, aad)

Расшифрование AES-GCM в Python

try: plaintext = aesgcm.decrypt(nonce, ciphertext, aad) except Exception: print('Decryption failed — tampered or wrong key') Если проверка тега завершается неудачей, decrypt() вызывает исключение. Никогда не игнорируйте это исключение.

Процесс шифрования файлов

with open('input.bin', 'rb') as f: plaintext = f.read() ciphertext_with_tag = aesgcm.encrypt(nonce, plaintext, None) # Store: nonce (12 bytes) + ciphertext_with_tag with open('output.enc', 'wb') as f: f.write(nonce + ciphertext_with_tag)

Процесс расшифрования файлов

with open('output.enc', 'rb') as f: data = f.read() nonce = data[:12] ciphertext_with_tag = data[12:] plaintext = aesgcm.decrypt(nonce, ciphertext_with_tag, None)

Управление одноразовыми номерами

Случайный одноразовый номер размером 12 байт с AES-GCM безопасно использовать не более чем для 2^32 операций шифрования с одним и тем же ключом, пока вероятность коллизии не становится существенной. После этого замените ключ.

Использование OpenSSL в командной строке

# Encrypt: openssl enc -aes-256-cbc -pbkdf2 -in plain.txt -out encrypted.bin # Decrypt: openssl enc -d -aes-256-cbc -pbkdf2 -in encrypted.bin -out plain.txt Примечание: режим CBC — добавьте флаг -GCM для аутентифицированного шифрования в более новых версиях OpenSSL.

Рекомендации по хранению ключей

Никогда не встраивайте ключи в исходный код. Используйте переменные окружения, AWS KMS, HashiCorp Vault или связку ключей OS. Регулярно заменяйте ключи. Отзывайте ключи, когда сотрудники покидают организацию.

Быстрая проверка

Что происходит, когда AES-GCM обнаруживает, что шифротекст был изменён?

Итоги

Теперь вы умеете шифровать файлы с помощью AES-GCM в Python. Далее мы перейдём к асимметричному шифрованию и изучим RSA с нуля.

Часто задаваемые вопросы

Урок «Практическое шифрование файлов с помощью AES» бесплатный?

Да — полный текст урока «Практическое шифрование файлов с помощью AES» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «Практическое шифрование файлов с помощью AES»?

Используйте OpenSSL и Python для шифрования и расшифрования настоящих файлов с AES Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Практическое шифрование файлов с помощью AES»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы симметричного шифрования
  2. Структура AES: раунды и матрица состояния
  3. Расширение ключа AES и размеры ключей
  4. Практическое шифрование файлов с помощью AES
← Назад к Cryptology Academy