smartpasslib-kotlin v4.0.0

Smart Passwords Library for Kotlin

Cryptographic password generation and management without storage. Cross-platform deterministic passwords for JVM and Android.

Kotlin Cryptography Zero-Storage Decentralized Cross-Platform JVM 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 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.

⚠️ Breaking Change (v4.0.0)

This version is NOT backward compatible with v1.x.x. Passwords generated with older versions cannot be regenerated with v4.0.0.

📖 Full migration instructions → see MIGRATION.md

  • 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# versions v4.0.0):

Key TypeIterationsPurpose
Private Key15-30 (dynamic)Password generation (never stored, never transmitted)
Public Key45-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:

PropertyTypeDescription
VERSIONStringLibrary version (4.0.0)
CHARSStringCharacter set used for generation

Methods:

MethodParametersReturnsDescription
generatePrivateKey(secret)secret: StringStringPrivate key (15-30 iterations)
generatePublicKey(secret)secret: StringStringPublic key (45-60 iterations)
verifySecret(secret, publicKey)secret, publicKeyBooleanVerify secret matches public key
generateSmartPassword(secret, length)secret, lengthStringDeterministic password
generateStrongPassword(length)lengthStringCryptographically random
generateBasePassword(length)lengthStringSimple random password
generateCode(length)lengthStringShort code (4-100 chars)

Input Validation:

ParameterMinimumMaximum
Secret phrase12 charsunlimited
Password length12 chars100 chars
Code length4 chars100 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 Paradigm10.5281/zenodo.17204738
    Architectural Shift from Data Protection to Data Non-Existence
  • Local Data Regeneration Paradigm10.5281/zenodo.17264327
    Ontological Shift from Data Transmission to Synchronous State Discovery

Same deterministic algorithm is available in multiple languages:

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