A lightweight, secure, and flexible password generator library for .NET, built with cryptographic randomness and fully customizable character sets.
- Cryptographically secure — built on .NET’s
RandomNumberGenerator
for high-entropy randomness - Performance-focused — uses
Span<char>
and stack allocation to minimize heap usage and avoid unnecessary string allocations - Customizable character sets — define your own character pools (e.g., symbols, digits, uppercase)
- Per-set minimum requirements — ensure that a minimum number of characters from each set are included
- Predictable-free output — final password is securely shuffled to eliminate character order patterns
- Ambiguity-avoiding — easily exclude confusing characters like
0
,O
,l
, andI
- Clean, testable design — .NET 8 compatible and unit-tested
using KPasswordGenerator;
// Define your password policy
PasswordSettings settings = new(
[
new(minRequired: 2, characterPool: "ABCDEFGHJKLMNPQRSTUVWXYZ"),
new(3, "abcdefghijkmnopqrstuvwxyz"), // At least 3 lowercase letters (no l)
new(4, "23456789"), // At least 4 digits (no 0, 1)
new(2, "!@$?_-") // At least 2 symbols
]);
PasswordGenerator generator = new(settings);
string password = generator.Generate(passwordLength: 16);
Console.WriteLine(password); // Example output: kAj79uV@E?m7_8eS
Quickly generate a password using default pools:
PasswordSettings settings = PasswordSettings.WithDefaults(minLower: 2, minUpper: 2, minDigits: 2, minSpecial: 1);
PasswordGenerator generator = new(settings);
string password = generator.Generate(12);
Generates a password of random length within a specified range.
- Ensures the generated password meets all defined character requirements.
- Uses secure randomness to choose the length.
Example:
string password = generator.GenerateRandomLength(12, 20);
Validates whether a password meets the current PasswordSettings
policy.
-
Checks overall length.
-
Verifies that the required number of characters from each character pool are present.
-
Returns
true
if all rules pass, otherwisefalse
. -
Example:
bool isValid = generator.Validate("abcD123!");
Install via NuGet:
dotnet add package KPasswordGenerator