Skip to main content

Tools for encryption/decryption

Project description

Version Supported Python Version Downloads


ttCrypto

Утилита для шифрования и расшифровки данных в буфере, поточно или в файле.

Библиотека содержит функции и консольную утилиту для работы с файлами.

Установка

pip install ttcrypto

Использование в коде

Простое шифрование/расшифровка (AES-256-GCM)

from ttcrypto import aes

key = bytes.fromhex('00' * 32)

encrypted_bytes = aes.encrypt_gcm_plain(data, key)
decrypted_bytes = aes.decrypt_gcm_plain(encrypted_bytes, key)

Поточное шифрование по AES-256-GCM

from ttcrypto import encrypt_gcm_generator

enc = encrypt_gcm_generator(key)          # инициализируем генератор
encrypted_bytes = enc.send(None)          # генерируем nonce для сессии
encrypted_bytes += enc.send(b'123')       # отправляем порцию данных (в цикле)
encrypted_bytes += enc.send(b'')          # отправляем пустую строку для финализации
encrypted_bytes = next(enc) + encrypted_bytes  # next вычисляет tag, ставим его в начало
# encrypted_bytes = tag(16) + nonce(12) + ciphertext

Поточная расшифровка по AES-256-GCM

from ttcrypto import decrypt_gcm_generator

dec = decrypt_gcm_generator(key)          # инициализируем генератор
next(dec)                                 # инициализируем ввод (всегда отвечает b'')
data = dec.send(encrypted_bytes)          # отправляем порцию данных (в цикле) - не менее 29 байт
data += dec.send(b'')                     # отправляем b'' для финализации
# data - оригинальные расшифрованные данные

Консольная утилита

Шифрование/расшифровка файла (ключ задаётся 64 hex символами)

$ ttcrypto -ek 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f source.txt target.enc
$ ttcrypto -dk 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f source.enc target.txt

Шифрование/расшифровка всех файлов в директории

$ ttcrypto -ek 00..1f source_dir encrypted_files_dir
$ ttcrypto -dk 00..1f encrypted_files_dir origin_files_dir

Шифрование файлов в директории, подходящих по имени

$ ttcrypto -e -k 00..1f -n '*.txt' source_dir encrypted_files_dir

Модуль криптографии AES-256-GCM

Cодержит:

  • функции шифрования/расшифровки байтов (с полной буферизацией),
  • функции-генераторы для поточного шифрования/расшифровки (без полной буферизации)
  • функции для работы с BufferedIOBase объектами (с интерфейсов файлов)

Сложность реализации поточной обработки при использовании GCM алгоритма заключается в том, что подпись (tag) вычисляется после обработки всех данных и как правило дописывается в конец файла. Но при расшифровке подпись нужна до обработки данных — а чтение файла с конца не всегда возможно. Поэтому решено записывать тег в начало контейнера, вместе с nonce:

tag(16) + nonce(12) + ciphertext

При работе с файловыми объектами в начало записывается 16 нулевых байт — чтобы зарезервировать место для подписи (tag). В конце шифрования, когда будет вычислен tag — курсор переставляется в начало файла и 16 нулевых байт перезаписываются подписью. Для системы которая один раз пишет — много читает, возможность сразу направить поток расшифрованных данных потребителю критически важна.

  • Файл 3,5Гб: шифрование ~ 4 сек, расшифровка ~ 3.8 сек (1 CPU ~ 70%, RAM ~ 50Мб)
  • Файл 9,4Мб: шифрование ~ 17.7 мс, расшифровка ~ 16.8 мс
  • Файл 68Кб: шифрование ~ 11 мс, расшифровка ~ 9.5 мс

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ttcrypto-0.2.1.tar.gz (13.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ttcrypto-0.2.1-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file ttcrypto-0.2.1.tar.gz.

File metadata

  • Download URL: ttcrypto-0.2.1.tar.gz
  • Upload date:
  • Size: 13.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ttcrypto-0.2.1.tar.gz
Algorithm Hash digest
SHA256 fa04db2dd647d116f9f6a71369fe5be437f54fbb6c78021f695c9deee83cc05d
MD5 db0f4c0d36eff2c88dcaffa415dad20a
BLAKE2b-256 f51abfaa09ed9ba25c6808883393cef3e26203d4da04dea939d2bb815847a6c8

See more details on using hashes here.

File details

Details for the file ttcrypto-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: ttcrypto-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ttcrypto-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 97ab86c49a9e4fb1070b8d7cf3bb22c0508bbafb6922bc7d5385a9076277a24a
MD5 0f518e0a10d4367b68134ac601e1e350
BLAKE2b-256 5059db44f8433c973b27fb249144d5069ced676e90eaeb4886c76e8fb0841a2a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page