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

encrypted_bytes = aes.encrypt_gcm_plain(text_bytes, passphrase)
decrypted_bytes = aes.decrypt_gcm_plain(encrypted_bytes, passphrase)

assert to_string(decrypted_bytes) == text

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

from ttcrypto import encrypt_gcm_generator

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

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

from ttcrypto import decrypt_gcm_generator

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

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

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

$ ttcrypto -e source.txt target.enc
$ ttcrypto -d source.enc target.txt

Шифрование с перезаписью целевого файла и передаченй секрета в команде

$ export TTCRYPTO_PASSPHRASE=123
$ ttcrypto -efp `echo $TTCRYPTO_PASSPHRASE` source.txt target.enc

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

$ ttcrypto -e source_dir encrypted_files_dir
$ ttcrypto -d encrypted_files_dir origin_files_dir

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

$ ttcrypto -e -n '*.txt' source_dir encrypted_files_dir

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

Cодержит:

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

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

tag(16) + salt(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


Release history Release notifications | RSS feed

This version

0.1

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.1.tar.gz (13.4 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.1-py3-none-any.whl (23.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ttcrypto-0.1.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.10

File hashes

Hashes for ttcrypto-0.1.tar.gz
Algorithm Hash digest
SHA256 6a0f14c4a74608dbf4300bbae5c51c13ef34b9b8c5c0db47f1584db1243baf9e
MD5 17762f2bf29d277fed1981c16d1b2d15
BLAKE2b-256 dac8dba0d940dfbf72a940905045e1df88d12542b74e3171652cbfcf5aca974f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ttcrypto-0.1-py3-none-any.whl
  • Upload date:
  • Size: 23.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.10

File hashes

Hashes for ttcrypto-0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 94f50479f28ea3ec73a0de1065ae486c7a0bf132563c02c29ab3834275ac19b7
MD5 8b9c9af5038c4ce36bf154bef87274c6
BLAKE2b-256 e3b9c36b27eafaa6edc62b7c91fbebfdee4a28ab154ca90d8bfb3bacd82c726b

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