Take your security to the next level!
Project description
BASEFWX is a hybrid post-quantum + AEAD encryption toolkit for files and media, with cross-compatible Python, C++, and Java implementations.
- Website: https://basefwx.fixcraft.jp
- Documentation: https://basefwx.fixcraft.jp/docs/CLI
- Source code: https://github.com/F1xGOD/basefwx
- Contributing: https://basefwx.fixcraft.jp/docs/CONTRIBUTING
- Bug reports: https://github.com/F1xGOD/basefwx/issues
- Report a security vulnerability: https://basefwx.fixcraft.jp/docs/SECURITY_MODEL
It provides:
- ML-KEM-768 master key wrapping (optional) and AES-GCM payload protection
- Password-based encryption with Argon2id or PBKDF2
- fwxAES file encryption with optional normalize wrapper
- Packetized live fwxAES stream API for transport-agnostic real-time pipelines
- b512/pb512 reversible encodings and file modes
- kFM carrier codecs (auto media/audio encode + strict carrier decode)
- jMG media cipher for images/audio with metadata control (
archive_originaltoggle). Video path is temporarily disabled in Python unlessBASEFWX_ENABLE_JMG_VIDEO=1. - C++ library and CLI with Python/C++/Java format parity
- Java (JVM) library and CLI for cross-compatible fwxAES/b512/pb512/b256/jMG/kFM
Quick Start
pip install basefwx
python -m basefwx cryptin aes-light file.bin -p "password" --strip
python -m basefwx cryptin aes-light file.bin.fwx -p "password"
python -m basefwx n10-enc "hello"
python -m basefwx n10-dec "<digits>"
python -m basefwx kFMe photo.png -o photo.wav # image/media -> audio carrier
python -m basefwx kFMe track.mp3 -o track.png --bw # audio -> image carrier
python -m basefwx kFMd photo.wav -o photo-restored.png # strict decode
python -m basefwx kFMd track.png -o track-restored.mp3
python -m basefwx cryptin fwxaes video.mp4 -p "password" # Python default: no-archive
python -m basefwx cryptin fwxaes video.mp4 -p "password" --archive # exact-restore trailer
Notes:
kFMdonly decodes BaseFWX carriers; it refuses plain WAV/PNG/MP3/M4A files.kFAe/kFAdremain available as deprecated aliases tokFMe/kFMd.- Release support policy is single-version: only the latest release is maintained; all older releases are immediately unsupported.
- Optional kFM/kFA acceleration:
BASEFWX_KFM_ACCEL=auto|cuda|cpu(defaultauto)BASEFWX_KFM_ACCEL_MIN_BYTES=<bytes>(default1048576, auto mode threshold)
- CLI progress now includes live system telemetry (CPU/GPU/RAM/I/O/TEMP when available).
Disable with
BASEFWX_PROGRESS_TELEMETRY=0. - Python
n10was optimized for large payloads, but compiled runtimes (C++/Java) are still expected to benchmark faster for very large text workloads.
Python API quick refs:
from basefwx import n10encode, n10decode, n10encode_bytes, n10decode_bytes
from basefwx import kFMe, kFMd
from basefwx import LiveEncryptor, LiveDecryptor, jMGe, jMGd
digits = n10encode("hello")
text = n10decode(digits)
blob_digits = n10encode_bytes(b"\x00\x01\x02")
blob = n10decode_bytes(blob_digits)
carrier = kFMe("input.mp3", output="input.png", bw_mode=True)
restored = kFMd("input.png", output="restored.mp3")
# jMG Python default is no-archive (smaller, non-byte-identical restore)
jMGe("clip.m4a", "password", output="clip.small.m4a")
jMGe("cover.png", "password", output="cover.exact.png", archive_original=True)
jMGd("clip.small.m4a", "password", output="clip.out.m4a")
# Live packetized stream encryption/decryption
enc = LiveEncryptor("password", use_master=False)
dec = LiveDecryptor("password", use_master=False)
wire = [enc.start(), enc.update(b"chunk-1"), enc.update(b"chunk-2"), enc.finalize()]
plain_chunks = []
for packet in wire:
plain_chunks.extend(dec.update(packet))
dec.finalize()
# ffmpeg pipe helpers for live media transport
from basefwx import fwxAES_live_encrypt_ffmpeg, fwxAES_live_decrypt_ffmpeg
fwxAES_live_encrypt_ffmpeg(
["ffmpeg", "-hide_banner", "-loglevel", "error", "-i", "input.m4a", "-f", "matroska", "-c", "copy", "-"],
"stream.live.fwx",
"password",
use_master=False,
)
fwxAES_live_decrypt_ffmpeg(
"stream.live.fwx",
["ffmpeg", "-hide_banner", "-loglevel", "error", "-y", "-f", "matroska", "-i", "-", "-c", "copy", "restored.mkv"],
"password",
use_master=False,
)
Hardware acceleration (Python jMG):
BASEFWX_HWACCEL=auto(default),nvenc,qsv,vaapi, oroffBASEFWX_HWACCEL_STRICT=1to fail instead of CPU fallback when requested accel is unavailable
Optional extras:
pip install basefwx[argon2]
Documentation
- Docs home (HTML)
- CLI and usage
- Security model
- Testing and benchmarks
- Contributing and code of conduct
- Java module
License
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
basefwx-3.6.3.tar.gz
(107.7 kB
view details)
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
basefwx-3.6.3-py3-none-any.whl
(111.0 kB
view details)
File details
Details for the file basefwx-3.6.3.tar.gz.
File metadata
- Download URL: basefwx-3.6.3.tar.gz
- Upload date:
- Size: 107.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f64156d8cbe3d1916336de4e0f68fe20fbc1ac8798260fa5ec4cb413b194041
|
|
| MD5 |
9c5b8893c3c25e362ecc1a5bcfd97ee4
|
|
| BLAKE2b-256 |
398aebf0b7878e3e5590e36fe9699fed9e52c9e23473f485a4395436952529a1
|
File details
Details for the file basefwx-3.6.3-py3-none-any.whl.
File metadata
- Download URL: basefwx-3.6.3-py3-none-any.whl
- Upload date:
- Size: 111.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8dd69f92086d0f483a86a3bb6e8b0e1f17a943e14169f811ffd2bb7eb7991fd3
|
|
| MD5 |
fefc9febca8c4c8b3a67effc96d8e948
|
|
| BLAKE2b-256 |
426f88e04cae3204b4dd13cd082854d965ab9893e9f54b9850d56149b3811b30
|