#encryption #aes-gcm #seed #wallet #argon2id

encryptor

Password-based encryption for Web3 wallet seed phrases

1 unstable release

Uses new Rust 2024

new 0.1.0 May 3, 2025

#29 in #aes-gcm

MIT license

13KB
72 lines

encryptor

Crates.io Docs.rs License

Encrypt a Web3 wallet secret phrase with an easy-to-remember password and store only the resulting ciphertext string.

  • KDF Argon2id — password → 256-bit key
  • AEAD AES-256-GCM — key + nonce → authenticated ciphertext
  • Blob [salt | nonce | ciphertext] Base64URL-encoded (no padding)
use encryptor::{encrypt, decrypt};

let phrase = "satoshi doll mercy …";      // wallet seed phrase
let pass   = "Fr33dom-2025!";             // memorable password

let blob = encrypt(phrase, pass)?;        // store this string
assert_eq!(phrase, decrypt(&blob, pass)?);

Threat model

✅ Protects against ❌ Does not protect against
Lost / stolen disk or backup Very weak or leaked passwords
Curious cloud operator Attackers who can key-log or phish your pass

Security disclaimer: No formal audit yet. Use at your own risk.


API overview

  • encrypt – passphrase → ciphertext string
  • decrypt – ciphertext string → original secret phrase
  • CryptoError – unified error enum

Dependencies

~1.9–2.5MB
~52K SLoC