smartpasslib
Smart Passwords Library for Rust
Cryptographic password generation and management without storage. Cross-platform deterministic passwords for Rust applications.
Smart Passwords Library: Cryptographic password generation and management without storage. Generate passwords from secrets, verify knowledge without exposure.
Cross-Platform Determinism: Same secret + same parameters = identical password on Rust, C#, Python, Kotlin, Go, JavaScript.
Decentralized by Design: No cloud, no database, no trust required.
No External Dependencies - Pure Rust, uses standard crypto.
- Zero-Storage Security - No passwords or secret phrases are ever stored or transmitted
- Decentralized Architecture - No central servers, no cloud dependency
- Cross-Platform Deterministic Generation - SHA-256 based, identical across languages
- Metadata Only - Store only public keys and descriptions
- On-Demand Regeneration - Passwords are recalculated when needed
- Cryptographically Secure - Uses SHA-256 and
randcrate
- Decentralized & Serverless - No central database, no cloud lock-in
- Smart Password Generation - Deterministic from secret phrase
- Public/Private Key System - 15-30 iterations for private key, 45-60 for public key (dynamic per secret)
- Secret Verification - Verify secret without exposing it
- Random Password Generation - Cryptographically secure random passwords
- Authentication Codes - Short codes for 2FA/MFA (4-100 chars)
- Metadata Manager - Store and manage password metadata locally
- No External Dependencies - Pure Rust, uses standard crypto
- Proof of Knowledge - Public keys verify secrets without exposing them
- Decentralized Trust - No third party needed - you control your secrets completely
- Deterministic Security - Same input = same output, always reproducible across platforms
- Dynamic Iteration Counts - Private key uses 15-30 iterations, public key uses 45-60 iterations (deterministic per secret)
- No Vulnerable Metadata Storage - Only public keys and descriptions can be stored (optional)
- Zero Storage of Secrets - Secret phrases exist only in your memory, private keys are derived on-demand and never persisted
- No Recovery Backdoors - Lost secret = permanently lost passwords (by design)
-
Pointer-Based Security Paradigm
- 10.5281/zenodo.17204738
Architectural Shift from Data Protection to Data Non-Existence -
Local Data Regeneration Paradigm
- 10.5281/zenodo.17264327
Ontological Shift from Data Transmission to Synchronous State Discovery
Key derivation (same as Python/JS/Kotlin/Go/C# versions v4.0.0):
| Key Type | Iterations | Purpose |
|---|---|---|
| Private Key | 15-30 (dynamic) | Password generation (never stored, never transmitted) |
| Public Key | 45-60 (dynamic) | Verification (stored locally) |
Character Set:
!@#$%^&*()_+-=[]{};:,.<>?/ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz
Validation Rules:
- Secret phrase: minimum 12 characters
- Password length: 12-100 characters
- Code length: 4-100 characters
Add to your Cargo.toml:
[dependencies] smartpasslib = "4.0"
Generate Smart Password:
use smartpasslib::generate_smart_password_sync;
let secret = "MyStrongSecretPhrase2026!";
let password = generate_smart_password_sync(secret, 16).unwrap();
println!("{}", password);
Generate Public/Private Keys:
use smartpasslib::{generate_private_key, generate_public_key};
let secret = "MyStrongSecretPhrase2026!";
let public_key = generate_public_key(secret).unwrap();
let private_key = generate_private_key(secret).unwrap();
Verify Secret:
use smartpasslib::{generate_public_key, verify_secret};
let secret = "MyStrongSecretPhrase2026!";
let stored_public_key = "...";
let is_valid = verify_secret(secret, &stored_public_key).unwrap();
Generate Random:
use smartpasslib::{generate_strong_password, generate_code};
let strong = generate_strong_password(20).unwrap();
let code = generate_code(8).unwrap();
Metadata Manager:
use smartpasslib::{SmartPasswordManager, SmartPassword};
let mut manager = SmartPasswordManager::new().unwrap();
let sp = SmartPassword::new(public_key, "GitHub".to_string(), 16).unwrap();
manager.add(sp).unwrap();
let retrieved = manager.get(&public_key).unwrap();
manager.delete(&public_key).unwrap();
Constants:
| Constant | Type | Description |
|---|---|---|
VERSION | &str | Library version (4.0.0) |
CHARS | &str | Character set used for generation |
Functions:
| Function | Parameters | Returns | Description |
|---|---|---|---|
generate_private_key(secret) | secret: &str | Result<String, Error> | Private key (15-30 iterations) |
generate_public_key(secret) | secret: &str | Result<String, Error> | Public key (45-60 iterations) |
verify_secret(secret, public_key) | secret, public_key | Result<bool, Error> | Verify secret matches public key |
generate_smart_password_sync(secret, length) | secret, length | Result<String, Error> | Deterministic password |
generate_strong_password(length) | length: usize | Result<String, Error> | Cryptographically random |
generate_base_password(length) | length: usize | Result<String, Error> | Simple random password |
generate_code(length) | length: usize | Result<String, Error> | Short code (4-100 chars) |
Classes:
| Class | Description |
|---|---|
SmartPassword | Metadata container (public_key, description, length) |
SmartPasswordManager | Persistent storage for password metadata (JSON file) |
The same deterministic algorithm is available in multiple languages. SmartPassLib Rust produces identical passwords to:
| Language | Repository |
|---|---|
| Python | smartpasslib |
| JavaScript | smartpasslib-js |
| Kotlin | smartpasslib-kotlin |
| Go | smartpasslib-go |
| C# | smartpasslib-csharp |
| Rust | smartpasslib (this) |
Core Libraries:
- smartpasslib - Python
- smartpasslib-js - JavaScript
- smartpasslib-kotlin - Kotlin
- smartpasslib-go - Go
- smartpasslib-csharp - C#
- smartpasslib-rs - Rust (this)
CLI Applications:
- CLI Smart Password Manager (Python)
- CLI Smart Password Generator (Python)
- CLI Smart Password Manager (C#)
- CLI Smart Password Generator (C#)
Desktop Applications:
Other:
git clone https://github.com/smartlegionlab/smartpasslib-rs cd smartpasslib-rs cargo build cargo test cargo run --example demo cargo bench cargo doc --open
Commands:
cargo check- Compilation checkcargo test- Run testscargo run --example demo- Run democargo bench- Run benchmarkscargo doc --open- Documentationcargo fmt- Formatcargo clippy- Linter
By using this software, you agree to the full disclaimer terms.
Software provided "AS IS" without warranty. You assume all risks.
Full legal disclaimer: See DISCLAIMER.md
License: BSD 3-Clause License