Esempio n. 1
0
 /// <summary>
 /// Initializes a new instance of DictionaryPasswordGeneratorProfile
 /// </summary>
 public GeneratorOptions()
 {
     WordLength = 6;
     SubstituteCharacters = false;
     SubstitutionList = string.Empty;
     CapitalizationType = CapitalizationTypes.None;
 }
Esempio n. 2
0
        /// <summary>
        /// Initializes a new instance of DictionaryPasswordGeneratorProfile.
        /// </summary>
        /// <param name="optionString">The option string.</param>
        public GeneratorOptions(string optionString)
        {
            // Check if a string was passed.
            if (!string.IsNullOrEmpty(optionString))
            {
                // Parse the string.
                string[] options = optionString.Split('|');

                WordLength = Convert.ToInt32(options[0]);
                SubstituteCharacters = Boolean.Parse(options[1]);
                SubstitutionList = options[2];
                CapitalizationType = (CapitalizationTypes)Enum.Parse(typeof(CapitalizationTypes), options[3]);
            }
            else
            {
                WordLength = 6;
                SubstituteCharacters = false;
                SubstitutionList = string.Empty;
                CapitalizationType = CapitalizationTypes.None;
            }
        }
        /// <summary>
        /// Capitalizes characters on the password.
        /// </summary>
        /// <param name="password">The password.</param>
        /// <param name="capitalizationType">The capitalization type.</param>
        /// <returns>The capitalized password.</returns>
        private static string CapitalizePassword(string password, CapitalizationTypes capitalizationType, RandomNumber randomNumber)
        {
            if (capitalizationType == CapitalizationTypes.None)
                return password;

            char[] passwordChars = password.ToCharArray();

            if (capitalizationType == CapitalizationTypes.FirstLetter)
            {
                // Loop through charactes and make the first letter upercase.
                for (int i = 0; i < passwordChars.Length; i++)
                {
                    if (char.IsLetter(passwordChars[i]) && char.IsLower(passwordChars[i]))
                    {
                        passwordChars[i] = char.ToUpper(passwordChars[i]);
                        break;
                    }
                }
            }
            else
            {
                // First let's make sure this can be applied to the current string
                bool hasLetter = false;
                for (int i = 0; i < passwordChars.Length; i++)
                {
                    if (char.IsLetter(passwordChars[i]))
                    {
                        hasLetter = true;
                        break;
                    }
                }

                // Get a random letter from the password and make it uppercase
                if (hasLetter)
                {
                    while (true)
                    {
                        int i = randomNumber.Next(passwordChars.Length);
                        if (char.IsLetter(passwordChars[i]) && char.IsLower(passwordChars[i]))
                        {
                            passwordChars[i] = char.ToUpper(passwordChars[i]);
                            break;
                        }
                    }
                }
            }

            return new string(passwordChars);
        }