AES-256 CBC file encryption library with support for individual files and directory batch operations.
Project description
brachinus
AES-256 CBC file encryption library with support for individual files and directory batch operations.
Supports single-file and directory batch operations + command-line usage
Brachinus is a simple, secure, and feature-rich AES-256 encryption library for Python.
It supports password-based key derivation, random binary keys, file/directory encryption, and includes a built-in CLI interface.
Features
- AES-256 encryption (CBC mode)
- PBKDF2 key derivation (100k iterations)
- Automatic IV generation
- Salt + IV metadata stored in output file
- File and directory encryption/decryption
- Optional extension filtering
- Key saving/loading utilities
- Built-in command-line interface (CLI)
Installation
Install:
pip install brachinus
Or install from source:
git clone https://github.com/JuanBindez/brachinus
cd brachinus
pip install .
Usage (Python API)
Encrypt a file with a password
from brachinus import encrypt_file_with_password
encrypt_file_with_password("example.txt", "mypassword")
Creates:
example.txt.enc
Decrypt a file
from brachinus import decrypt_file_with_password
decrypt_file_with_password("example.txt.enc", "mypassword")
Using the AES256 Class Directly
With a password
from brachinus import AES256
aes = AES256(password="mypassword")
aes.encrypt_file("data.pdf")
aes.decrypt_file("data.pdf.enc")
With a random binary key
aes = AES256() # generates a new random key
print(aes.key)
Key save/load
aes.save_key("aes.key")
loaded = AES256.load_from_keyfile("aes.key")
Directory Encryption
Encrypt all files
aes.encrypt_directory("myfolder")
Produces:
myfolder_encrypted/
Encrypt only specific extensions
aes.encrypt_directory("photos", extensions=[".jpg", ".png"])
Directory Decryption
aes.decrypt_directory("myfolder_encrypted")
Creates:
myfolder_encrypted_decrypted/
Key Information
info = aes.get_key_info()
print(info)
Example:
{
"key": "...",
"key_hex": "a4f5...",
"salt": "...",
"salt_hex": "d2ab...",
"key_type": "password-derived"
}
Internal Encrypted File Format
[4 bytes salt_length] [salt (if present)] [16-byte IV] [encrypted_data]
- Salt only stored for password-derived keys
- IV always present
- Ensures reproducible decryption
Command Line Interface (CLI)
Brachinus includes a terminal command: brachinus
After installation you can run:
brachinus -h
CLI Commands
Encrypt a file
brachinus -ef input.txt
Encrypt a file with password
brachinus -ef input.txt
Decrypt a file
brachinus -df input.txt.enc
Encrypt a directory
brachinus -ed myfolder
Decrypt a directory
brachinus -dd myfolder_encrypted
Use a keyfile instead of password
brachinus -ef document.pdf --keyfile aes.key
Security Notes
⚠️ Use strong passwords
⚠️ Never reuse password + salt manually
⚠️ Keep .key files secure
⚠️ Lost passwords or keys cannot be recovered
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 brachinus-1.1rc1.tar.gz.
File metadata
- Download URL: brachinus-1.1rc1.tar.gz
- Upload date:
- Size: 15.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03b6fb4ea4a6ecbecbccffd35ec0cfbe4837f6d4440552ed8d772abec90b1b5d
|
|
| MD5 |
67bf00b1381ea1fb84c246a394d9e640
|
|
| BLAKE2b-256 |
e54eb27fd28bb679138acb84369f07a438de8c9a029ad67d5d286a6ecd4f797e
|
File details
Details for the file brachinus-1.1rc1-py3-none-any.whl.
File metadata
- Download URL: brachinus-1.1rc1-py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64b6491b759ddce27f0272539f0c2912d9665234c823682d112379e650ee6de3
|
|
| MD5 |
0235caf747be20fb015c4043d62189f9
|
|
| BLAKE2b-256 |
a1d05dc89dd864bb494f34cb5a18e16e03374835882febd29f6b2c258d3b9270
|