Skip to main content

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 мс

Release files for ttcrypto 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ttcrypto 0.2.1
File Size Uploaded
ttcrypto-0.2.1.tar.gz 13.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ttcrypto 0.2.1
File Interpreter ABI Platform
ttcrypto-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 22.8 kB

Release files / ttcrypto-0.2.1.tar.gz

Download URL ttcrypto-0.2.1.tar.gz
Size 13.8 kB
Tags Source
SHA-256 checksum
How to use checksums
fa04db2dd647d116f9f6a71369fe5be437f54fbb6c78021f695c9deee83cc05d
BLAKE2b-256 checksum
How to use checksums
f51abfaa09ed9ba25c6808883393cef3e26203d4da04dea939d2bb815847a6c8
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / ttcrypto-0.2.1-py3-none-any.whl

Download URL ttcrypto-0.2.1-py3-none-any.whl
Size 9.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
97ab86c49a9e4fb1070b8d7cf3bb22c0508bbafb6922bc7d5385a9076277a24a
BLAKE2b-256 checksum
How to use checksums
5059db44f8433c973b27fb249144d5069ced676e90eaeb4886c76e8fb0841a2a
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2

2 release files

0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page