Cryptographic password generation and management without storage
Cross-platform deterministic passwords on Python, C#, Go, Kotlin, JavaScript. Decentralized by design.
Smart Passwords Library: Cryptographic password generation and management without storage. Generate passwords from secrets, verify knowledge without exposure, manage metadata securely.
Now with Cross-Platform Determinism: Same secret + same parameters = identical password on C#, Python, Go, Kotlin, JavaScript and any language with SHA-256.
Decentralized by Design: Unlike traditional password managers that store encrypted vaults on central servers, smartpasslib stores nothing. Your secrets never leave your device. Passwords are regenerated on-demand — no cloud, no database, no trust required.
⚠️ Breaking Change (v4.0.0)
This version is NOT backward compatible with v1.x.x, v2.x.x, or v3.x.x. Passwords generated with older versions cannot be regenerated with v4.0.0.
📖 Full migration instructions → see MIGRATION.md
secrets module and SHA-256Validation Rules: Secret phrase: min 12 chars · Password length: 12-100 chars · Code: 4-100 chars
Why SHA-256 instead of SHA3-512:
Key Derivation
| Key Type | Iterations | Purpose |
|---|---|---|
| Private Key | 15-30 (dynamic) | Password generation (never stored) |
| Public Key | 45-60 (dynamic) | Verification (stored locally) |
Character Set (Google-compatible):
!@#$%^&*()_+-=[]{};:,.<>?/ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz
What's NOT stored: Secret phrase · The actual password · Any reversible password data
What IS stored (optional):
pip install smartpasslib
pip install smartpasslib
Generate Password
from smartpasslib import SmartPasswordMaster
secret = "my_strong_secret_key"
password = SmartPasswordMaster.generate_smart_password(
secret=secret,
length=12
)
print(f"Your password: {password}")
Verification Without Storage
public_key = SmartPasswordMaster.generate_public_key(secret) is_valid = SmartPasswordMaster.check_public_key(secret, public_key) print(is_valid) # True
SmartPasswordMaster — Main Interface
from smartpasslib import SmartPasswordMaster
base_password = SmartPasswordMaster.generate_base_password(length=12)
strong_password = SmartPasswordMaster.generate_strong_password(length=14)
smart_password = SmartPasswordMaster.generate_smart_password("my_strong_secret_key", 12)
auth_code = SmartPasswordMaster.generate_code(8)
SmartPasswordManager — Metadata Storage
from smartpasslib import SmartPasswordManager, SmartPassword, SmartPasswordMaster
manager = SmartPasswordManager()
public_key = SmartPasswordMaster.generate_public_key("MyStrongSecretPhrase2026!")
smart_pass = SmartPassword(
public_key=public_key,
description="GitHub account",
length=18
)
manager.add_smart_password(smart_pass)
Same deterministic algorithm is available in multiple languages:
Core Libraries:
CLI Applications:
Desktop Applications:
Other:
| Platform | Path |
|---|---|
| Linux | ~/.config/smart_password_manager/passwords.json |
| Windows | C:\Users\Username\.config\smart_password_manager\passwords.json |
Legacy Migration: Old ~/.cases.json files from v1.x.x/v2.x.x/v3.x.x are NOT compatible with v4.0.0.
Secret Phrase Security
Secret Phrase Strength:
Remember: The app cannot recover your secret phrase. If you lose it, all passwords are permanently lost.
NEVER use your password description as secret phrase
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