smartpasslib-csharp v4.0.0

Smart Passwords Library for C#

Cryptographic password generation and management without storage. Cross-platform deterministic passwords for .NET applications.

C# .NET Cryptography Zero-Storage Decentralized Cross-Platform

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.

No External Dependencies — Uses only System.Security.Cryptography.

⚠️ Breaking Change (v4.0.0)

This version is NOT backward compatible with v1.0.5. 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

  • 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 — uses only System.Security.Cryptography
  • Full Test Coverage — 100% tested for reliability and security

  • 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/Kotlin/Go versions):

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.cs to your project.

Generate Smart Password:

using SmartLegionLab.SmartPassLib;

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

var password = SmartPasswordGenerator.GenerateSmartPassword(secret, length);
Console.WriteLine(password);

Generate Public/Private Keys:

var secret = "MyStrongSecretPhrase2026!";

var publicKey = SmartPasswordGenerator.GeneratePublicKey(secret);
var privateKey = SmartPasswordGenerator.GeneratePrivateKey(secret);

Console.WriteLine($"Public Key (store locally): {publicKey}");
Console.WriteLine($"Private Key (never store): {privateKey}");

Verify Secret Against Public Key:

var secret = "MyStrongSecretPhrase2026!";
var storedPublicKey = "..."; // from local storage

var isValid = SmartPasswordGenerator.VerifySecret(secret, storedPublicKey);
if (isValid)
{
    var password = SmartPasswordGenerator.GenerateSmartPassword(secret, 16);
}

Generate Random Passwords:

// Strong random (cryptographically secure)
var strong = SmartPasswordGenerator.GenerateStrongPassword(20);

// Base random
var basePwd = SmartPasswordGenerator.GenerateBasePassword(16);

// Authentication code (4-100 chars)
var code = SmartPasswordGenerator.GenerateCode(8);

Metadata Manager:

var manager = new SmartPasswordManager();
var smartPassword = new SmartPassword(publicKey, "GitHub Account", 16);
manager.AddSmartPassword(smartPassword);

var retrieved = manager.GetSmartPassword(publicKey);
manager.DeleteSmartPassword(publicKey);

Constants (SmartPasswordGenerator):

ConstantTypeDescription
VersionstringLibrary version (4.0.0)
CharsstringCharacter set used for generation

Methods (SmartPasswordGenerator):

MethodParametersReturnsDescription
GeneratePrivateKey(secret)secret: stringstringPrivate key (15-30 iterations)
GeneratePublicKey(secret)secret: stringstringPublic key (45-60 iterations)
VerifySecret(secret, publicKey)secret, publicKeyboolVerify 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)

Classes:

ClassDescription
SmartPasswordMetadata container (PublicKey, Description, Length)
SmartPasswordManagerPersistent storage for password metadata (JSON file)

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:

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