String in, string out symmetric encryption
Oboron is a string in, string
out symmetric encryption protocol — the
enc operation takes a plaintext string
and returns an obtext string;
dec reverses it. Encryption and encoding
are combined into one seamless process across all
language implementations.
| Document | Description |
|---|---|
| spec.html | Protocol specification: formats, algorithms, key management, properties, API |
| cli.html | CLI specification: ob and
obz command-line interface |
enc and dec are the
only operations you need; no manual
encoding/decoding stepsaasv = Authenticated + Avalanche
+ SiV), making cryptographic choices accessible
without deep expertiseGenerate your 512-bit key (86 base64 characters):
Rust:
cargo run --bin keygen
or in your code:
let key = oboron::generate_key();
Python:
python -m oboron.keygen
or in your code:
key = oboron.generate_key()
Save the key as an environment variable, then use
AasvC32 (a secure scheme, 256-bit
encrypted with AES-SIV, encoded using Crockford's
base32 variant) for enc/dec:
Rust:
use oboron::AasvC32;
let key = env::var("OBORON_KEY")?;
let ob = AasvC32::new(&key)?;
let ot = ob.enc("hello, world")?;
let pt2 = ob.dec(&ot)?;
println!("obtext: {}", ot);
// "obtext: cbv74r1m7a7cf8n6gzdy..."
assert_eq!(pt2, "hello, world");
Python:
import os
from oboron import AasvC32
key = os.getenv("OBORON_KEY")
ob = AasvC32(key)
ot = ob.enc("hello, world")
pt2 = ob.dec(ot)
print(f"obtext: {ot}")
# "obtext: cbv74r1m7a7cf8n6gzdy..."
assert pt2 == "hello, world"
All implementations produce identical obtext for the same key and plaintext, demonstrating cross-language interoperability.
cli.html specifies a standardized CLI interface that every conforming Oboron implementation must provide. This is not just for ergonomics — it enables a cross-language conformance testing suite: a single test harness can run the same test vectors against any implementation (Rust, Python, Go, etc.) through a shared CLI contract, verifying that each implementation produces identical outputs. This means cross-language interoperability is continuously verified, not just assumed.
Oboron's combination of properties — particularly prefix entropy, compactness, and deterministic injectivity — enables specialized use cases beyond general-purpose encryption:
| Use Case | Traditional Solution | Oboron Approach |
|---|---|---|
| Short unique IDs | UUIDv4 (36 chars) | ob:aasv.c32
(34-47 chars, reversible) |
| URL parameters | JWT (150+ chars) | ob:aasv.b64
(4.5x smaller, 4x faster) |
| Database ID masking | Hashids (not secure) | Proper encryption |
oboron crate)
oboron-cli
(ob and obz
binaries)ob-enc/oboron-rs/oboron-py
Licensed under the MIT license.