Skip to main content

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 --help

CLI Commands

Encrypt a file

brachinus encrypt-file input.txt

Encrypt a file with password

brachinus encrypt-file input.txt --password "mypassword"

Decrypt a file

brachinus decrypt-file input.txt.enc --password "mypassword"

Encrypt a directory

brachinus encrypt-dir myfolder --password "mypassword"

Decrypt a directory

brachinus decrypt-dir myfolder_encrypted --password "mypassword"

Use a keyfile instead of password

brachinus encrypt-file 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


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.0rc4.tar.gz (14.2 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.0rc4-py3-none-any.whl (14.6 kB view details)

Uploaded Python 3

File details

Details for the file brachinus-1.0rc4.tar.gz.

File metadata

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

File hashes

Hashes for brachinus-1.0rc4.tar.gz
Algorithm Hash digest
SHA256 1576c9655f47a9be02d819cc6f26c5b8900714bcd68f697741dbad9784404517
MD5 dc11f50894c57a9e96590b3d736b0662
BLAKE2b-256 7bcd72ea12c00203d2a36a016541320a7563cd15d5f3a97b4f266565a5594c1e

See more details on using hashes here.

File details

Details for the file brachinus-1.0rc4-py3-none-any.whl.

File metadata

  • Download URL: brachinus-1.0rc4-py3-none-any.whl
  • Upload date:
  • Size: 14.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.0rc4-py3-none-any.whl
Algorithm Hash digest
SHA256 a6c7a4136f1a58df69f9b71f3d4873983584b7e1f4c6de1e6fd225a3095e8b5f
MD5 e5715210ff2e1ffccf6a915d2998d783
BLAKE2b-256 7391bf2a37e5816263a138ba1739bb061e4f1066a39175937c3a5b94f76de17f

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