public string Generate(PasswordOptions options) { string password = string.Empty; string possibles = string.Empty; if (options.IncludeSymbols) { possibles += simpleSymbols; } if (options.IncludeNumbers) { possibles += numbers; } if (options.IncludeLowercase) { possibles += alphabetLower; } if (options.IncludeUppercase) { possibles += alphabetUpper; } if (!options.ExcludeAmbiguous) { possibles += harderSymbols; } // Loop through this until we meet the length requirement do { password = GeneratePassword(possibles, password, options.PasswordLength); if (options.ExcludeDuplicates) { password = StripDuplicates(password); } if (options.ExcludeSimilar) { password = StripDuplicatesCaseInsensitive(password); } if (options.ExcludeAmbiguous) { password = StripConfusingChars(password); } }while (password.Length < options.PasswordLength); return(password); }
private void button1_Click(object sender, EventArgs e) { generatedPassword.Text = string.Empty; PasswordOptions options = new PasswordOptions() { PasswordLength = (int.Parse(passwordLengthTextBox.Text)), IncludeSymbols = cbIncludeSymbols.Checked, IncludeNumbers = cbIncludeNumbers.Checked, IncludeLowercase = cbIncludeLowercase.Checked, IncludeUppercase = cbIncludeUppercase.Checked, ExcludeDuplicates = cbExcludeDuplicateChars.Checked, ExcludeSimilar = cbExcludeSimilarChars.Checked, ExcludeAmbiguous = cbExcludeAmbiguous.Checked }; generatedPassword.Text = password.Generate(options); // Copy to clipboard to make it easier to use Clipboard.SetText(generatedPassword.Text); }