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);
        }
Beispiel #2
0
        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);
        }