smartpasslib-js v4.0.0

Smart Passwords Library for JavaScript

Cryptographic password generation and management without storage. Cross-platform deterministic passwords with Web Crypto API.

JavaScript Cryptography Zero-Storage Decentralized Cross-Platform Web Crypto API

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 JavaScript, C#, Python, Go, Kotlin 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. 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 Web Crypto API

  • 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 Dependencies — pure JavaScript, uses Web Crypto API

  • 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/C#/Go/Kotlin 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

Just copy smartpasslib.js to your project and include it:

<script src="path/to/smartpasslib.js"></script>

Generate Smart Password:

const secret = "MyStrongSecretPhrase2026!";
const length = 16;

const password = await SmartPassLib.generateSmartPassword(secret, length);
console.log(password);

Generate Public/Private Keys:

const secret = "MyStrongSecretPhrase2026!";

const publicKey = await SmartPassLib.generatePublicKey(secret);
const privateKey = await SmartPassLib.generatePrivateKey(secret);

console.log('Public Key (store locally):', publicKey);
console.log('Private Key (never store):', privateKey);

Verify Secret Against Public Key:

const secret = "MyStrongSecretPhrase2026!";
const storedPublicKey = "..."; // from local

const isValid = await SmartPassLib.verifySecret(secret, storedPublicKey);
if (isValid) {
    const password = await SmartPassLib.generateSmartPassword(secret, 16);
}

Generate Random Passwords:

// Strong random (cryptographically secure)
const strong = await SmartPassLib.generateStrongPassword(20);

// Base random
const base = await SmartPassLib.generateBasePassword(16);

// Authentication code (4-100 chars)
const code = await SmartPassLib.generateCode(8);

Properties:

PropertyTypeDescription
VERSIONstringLibrary version (4.0.0)
CHARSstringCharacter set used for generation

Methods:

MethodParametersReturnsDescription
generatePrivateKey(secret)secret: stringPromise<string>Private key (15-30 iterations)
generatePublicKey(secret)secret: stringPromise<string>Public key (45-60 iterations)
verifySecret(secret, publicKey)secret, publicKeyPromise<boolean>Verify secret matches public key
generateSmartPassword(secret, length)secret, lengthPromise<string>Deterministic password
generateStrongPassword(length)lengthPromise<string>Cryptographically random
generateBasePassword(length)lengthPromise<string>Simple random password
generateCode(length)lengthPromise<string>Short 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:

Open test.html in your browser to run the test suite.

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