Create BIP-39 mnemonics from quantum entropy (ANU QRNG) with default XOR mixing against local CSPRNG (os.urandom). If either source is honest, the output is cryptographically unpredictable. Designed for offline ceremonies and for importing your own mnemonic into hardware wallets.
⚠️ Use strictly offline for real funds. Never paste mnemonics/seeds into a browser or an online machine. Prefer restoring your mnemonic into a hardware wallet and enabling a BIP-39 passphrase on the device.
- Entropy mixing: when QRNG is used we XOR it with
os.urandomby default. If one source remains unknown to an adversary, the result remains unknown (one-time pad style property). - No telemetry: you can run fully offline (local CSPRNG); with QRNG the final result is QRNG ⊕ local CSPRNG, so the remote QRNG operator cannot reconstruct it.
- BIP-39 checksum: adds integrity, not reducing entropy.
See SECURITY.md for threat models and limitations.
# Quantum (ANU AQN) + XOR with os.urandom (recommended), 12 words (128-bit)
python qrng_bip39.py --anu-api-key "$AQN_KEY" --bytes 16 -v
# Quantum (ANU Legacy, public)
python qrng_bip39.py --use-legacy-anu --bytes 16 -v
# Pure QRNG (no mixing) – only if you really want it
python qrng_bip39.py --anu-api-key "$AQN_KEY" --bytes 16 --no-mix -v
# Local only (offline)
python qrng_bip39.py --fallback-osrandom --bytes 16 -v
# Print 64-byte seed (hex) – dangerous, keep strictly offline
python qrng_bip39.py --anu-api-key "$AQN_KEY" --bytes 16 --print-seed
*Passphrase generator (optional “25th word”)*
# 8-word passphrase from the BIP-39 list (≈88 bits), QRNG ⊕ CSPRNG
python qrng_bip39.py --anu-api-key "$AQN_KEY" --make-passphrase words --pw-words 8
# 18-char ASCII passphrase (a-z0-9-_.) with unbiased sampling (≈100+ bits)
python qrng_bip39.py --make-passphrase ascii --pw-ascii-len 18 --fallback-osrandom