KeyBraid for Python
Cross-platform master-secret encryption. Encrypt on Python, decrypt on Node.js, Flutter, or Java — and vice versa.
- Cipher: XChaCha20-Poly1305 (AES-256-GCM fallback)
- Key derivation: HKDF-SHA3-512 → SHA3-512 final key
- Spec: ../spec/SPEC-v3.md
Requirements
- Python 3.10+
- uv (recommended) or pip
Installation
cd python
uv sync --extra dev
Quick start
from keybraid import decrypt, encrypt, derive_key1, derive_key2, key_fingerprint
package, master_secret = encrypt("secret message")
plain = decrypt(package, master_secret)
key1 = derive_key1(master_secret)
key2 = derive_key2(master_secret)
fp = key_fingerprint(master_secret)
Optional password protection
from keybraid import protect_master_secret
protected, salt = protect_master_secret(master_secret, "user-password")
package, _ = encrypt("data", protected)
API reference
| Function | Description |
|---|---|
generate_master_secret() |
Random 256-char Base62 master secret |
derive_key1(master_secret) |
Deterministic Key1 |
derive_key2(master_secret) |
Deterministic Key2 |
encrypt(plain_text, master_secret=None) |
Returns (EncryptedPackage, master_secret) |
decrypt(package, master_secret) |
Returns plaintext |
key_fingerprint(master_secret) |
SHA3-256 fingerprint (Base64) |
protect_master_secret(master_secret, password) |
Argon2id-protected master secret |
Encrypted package
{
"version": "v3",
"algorithm": "XChaCha20-Poly1305",
"nonce": "...",
"ciphertext": "...",
"tag": "..."
}
Tests
uv run pytest -q
uv run python scripts/vectors_v3.py
Cross-platform vectors: ../spec/test-vectors-v3.json
Security
- Store
master_secretseparately from the encrypted package. - Each
encrypt()without a master secret generates a new random master secret.
Metadata
Release files for keybraid 4.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| keybraid-4.0.0.tar.gz | 9.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| keybraid-4.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 25.2 kB
Release files / keybraid-4.0.0.tar.gz
| Download URL | keybraid-4.0.0.tar.gz |
|---|---|
| Size | 9.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7e0e11fe838193c1dde57cb5276674d15f3ad1d1e4dbd0b624150285656e2874
|
|
BLAKE2b-256 checksum How to use checksums |
8ad3ff3c520fe03b93bfc6c9459d5ffe4ae4ed2e79c2e4f858cbf9a2ebe967f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|
Release files / keybraid-4.0.0-py3-none-any.whl
| Download URL | keybraid-4.0.0-py3-none-any.whl |
|---|---|
| Size | 16.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
40bc5701bc9742e545d9fbba422341ae78caa5fe06f5a00dd77ba61fe8343e06
|
|
BLAKE2b-256 checksum How to use checksums |
1d66ad1ef6cc66254648c5b65fbee1b21de61533b62a9b9dadde0d2b30e9c305
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.11
|