Skip to main content

AES-256 CBC file encryption library with support for individual files and directory batch operations.

Project description

brachinus

PyPI - Downloads PyPI - License GitHub Tag PyPI - Version

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 .

Quick Start (Python API)

Using the AES256 Class Directly

With a password

from brachinus import AES256

PASS_WORD = "password123"

crypt = AES256(password=PASS_WORD)
crypt.encrypt_file(
    file_path="file.txt",
    encrypt_filename=True
)

crypt.decrypt_file("file.txt.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 (opitional --encryptfilename)

brachinus -ef input.txt --encryptfilename

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

Encrypt the data/ directory, including subfolders (-r) and obfuscate filenames (--encryptfilename):

brachinus -ed data/ -r --encryptfilename

Decrypt the directory, restoring the original structure and names (-r, --decryptfilename):

brachinus -dd data/_encrypted -r --decryptfilename

Security Notes

⚠️ Use strong passwords
⚠️ Never reuse password + salt manually
⚠️ Keep .key files secure
⚠️ Lost passwords or keys cannot be recovered


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

brachinus-1.2.0.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

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

brachinus-1.2.0-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

File details

Details for the file brachinus-1.2.0.tar.gz.

File metadata

  • Download URL: brachinus-1.2.0.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for brachinus-1.2.0.tar.gz
Algorithm Hash digest
SHA256 a1345b8def3324e7fcf1136f06489eee0800e31af83c4b0c123eda5332bc8763
MD5 66435beb2f4e09e5f926e0480f23b139
BLAKE2b-256 53d890c6bfa52ed4cfce23f69d1c6a37c702e12c4776782d8a3362cd9525144a

See more details on using hashes here.

File details

Details for the file brachinus-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: brachinus-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 15.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for brachinus-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d19185c253c3a55a1061c53add0a67e7da04cbaa8e7e905c313921816b61bbe5
MD5 6cc6cfeede87f931c6f20b50b78c125b
BLAKE2b-256 06a0f87412f4f717f990c22972585c5035f9ecc2379341f1c03c722c3e70e600

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