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.- 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 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.2.tar.gz
(97.8 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.2-py3-none-any.whl
(100.7 kB
view details)
File details
Details for the file basefwx-3.6.2.tar.gz.
File metadata
- Download URL: basefwx-3.6.2.tar.gz
- Upload date:
- Size: 97.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
005e69e0c5db65f01d9716c26098782644e672074fd301d1d901dbec3404be01
|
|
| MD5 |
efaf217701f37bf9d776c380ba83e223
|
|
| BLAKE2b-256 |
998db5b5c6022684ad05d769b9659ef1f5fbe30b3fa75fd2cefafc70affdf58c
|
File details
Details for the file basefwx-3.6.2-py3-none-any.whl.
File metadata
- Download URL: basefwx-3.6.2-py3-none-any.whl
- Upload date:
- Size: 100.7 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 |
d5563092479cf54fae6dfeb0d120ac01b2723ba7ddc1b669248ed86546919a26
|
|
| MD5 |
ca11b0e8b34c99a971dfdc7ef7573cc0
|
|
| BLAKE2b-256 |
680ec77473a7bbce756cfb88efeaa313cdff381f2abadeb53c675e1764d75661
|