smartpasslib-kotlin
Smart Passwords Library for Kotlin
Cryptographic password generation and management without storage. Cross-platform deterministic passwords for JVM and Android.
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 Kotlin, C#, Python, Go, JavaScript, Rust 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.
JVM/Android Ready - Works on any Kotlin platform.
- 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 - identical secret + parameters = identical password on any language
- Metadata Only - store only verification metadata (public keys, descriptions, lengths)
- On-Demand Regeneration - passwords are recalculated when needed
- Cryptographically Secure - uses SHA-256 and SecureRandom
- 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
- Secret Verification - verify secret without exposing it
- Random Password Generation - cryptographically secure random passwords
- Authentication Codes - short codes for 2FA/MFA (4-100 chars)
- No External Dependencies - pure Kotlin, uses standard crypto
- JVM/Android Ready - works on any Kotlin platform
- Proof of Knowledge - public keys verify secrets without exposing them
- Decentralized Trust - no third party needed
- Deterministic Security - same input = same output, always reproducible across platforms
- Dynamic Iteration Counts - private key: 15-30, public key: 45-60
- Zero Storage of Secrets - secret phrases exist only in your memory
- No Recovery Backdoors - lost secret = permanently lost passwords
Validation Rules: Secret phrase: min 12 chars · Password length: 12-100 chars · Code: 4-100 chars
Key derivation (same as Python/JS/Go/C#/Rust 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
Decentralized Architecture:
- No central authority required
- Metadata can be synced via any channel (USB, cloud, even paper)
- Your security depends only on your secret phrase
- Works offline - no internet connection required
Copy SmartPassLib.kt to your project.
Generate Smart Password:
import com.smartlegionlab.smartpasslib.SmartPassLib
fun main() {
val secret = "MyStrongSecretPhrase2026!"
val length = 16
val password = SmartPassLib.generateSmartPassword(secret, length)
println(password)
}
Generate Public/Private Keys:
val secret = "MyStrongSecretPhrase2026!"
val publicKey = SmartPassLib.generatePublicKey(secret)
val privateKey = SmartPassLib.generatePrivateKey(secret)
println("Public Key (store locally): $publicKey")
println("Private Key (never store): $privateKey")
Verify Secret Against Public Key:
val secret = "MyStrongSecretPhrase2026!"
val storedPublicKey = "..." // from local
val isValid = SmartPassLib.verifySecret(secret, storedPublicKey)
if (isValid) {
val password = SmartPassLib.generateSmartPassword(secret, 16)
}
Generate Random Passwords:
// Strong random (cryptographically secure) val strong = SmartPassLib.generateStrongPassword(20) // Base random val base = SmartPassLib.generateBasePassword(16) // Authentication code (4-100 chars) val code = SmartPassLib.generateCode(8)
Properties:
| Property | Type | Description |
|---|---|---|
VERSION | String | Library version (4.0.0) |
CHARS | String | Character set used for generation |
Methods:
| Method | Parameters | Returns | Description |
|---|---|---|---|
generatePrivateKey(secret) | secret: String | String | Private key (15-30 iterations) |
generatePublicKey(secret) | secret: String | String | Public key (45-60 iterations) |
verifySecret(secret, publicKey) | secret, publicKey | Boolean | Verify secret matches public key |
generateSmartPassword(secret, length) | secret, length | String | Deterministic password |
generateStrongPassword(length) | length | String | Cryptographically random |
generateBasePassword(length) | length | String | Simple random password |
generateCode(length) | length | String | Short code (4-100 chars) |
Input Validation:
| Parameter | Minimum | Maximum |
|---|---|---|
| Secret phrase | 12 chars | unlimited |
| Password length | 12 chars | 100 chars |
| Code length | 4 chars | 100 chars |
Secret Phrase Requirements:
- Minimum 12 characters (enforced)
- Case-sensitive
- Use mix of: uppercase, lowercase, numbers, symbols
- Never store digitally
- NEVER use your password description as secret phrase
Strong Secret Examples:
"MyStrongSecretPhrase2026!" - mixed case + numbers + symbols "P@ssw0rd!LongSecret" - special chars + numbers + length "GitHubPersonal2026!" - description + extra chars
Weak Secret Examples (avoid):
"short" - too short, raises exception "GitHub Account" - using description as secret (weak!) "password" - dictionary word, too short "1234567890" - only digits, too short
Decentralized Nature:
There is no "forgot password" button. This is by design:
- No central server can reset your passwords
- No support team can recover your access
- Your secret phrase is the ONLY key
This is the price of true decentralization - you are completely in control.
-
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
Same deterministic algorithm is available in multiple languages:
- smartpasslib - Python
- smartpasslib-js - JavaScript
- smartpasslib-go - Go
- smartpasslib-csharp - C#
- smartpasslib-rs - Rust
Run the test script:
kotlin test.kts
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