Tools for encryption/decryption
Project description
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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a0f14c4a74608dbf4300bbae5c51c13ef34b9b8c5c0db47f1584db1243baf9e
|
|
| MD5 |
17762f2bf29d277fed1981c16d1b2d15
|
|
| BLAKE2b-256 |
dac8dba0d940dfbf72a940905045e1df88d12542b74e3171652cbfcf5aca974f
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94f50479f28ea3ec73a0de1065ae486c7a0bf132563c02c29ab3834275ac19b7
|
|
| MD5 |
8b9c9af5038c4ce36bf154bef87274c6
|
|
| BLAKE2b-256 |
e3b9c36b27eafaa6edc62b7c91fbebfdee4a28ab154ca90d8bfb3bacd82c726b
|