Skip to main content

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_secret separately 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)

Source distribution for keybraid 4.0.0
File Size Uploaded
keybraid-4.0.0.tar.gz 9.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for keybraid 4.0.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

4.0.0 This release

2 release files

3.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page