/// <summary> /// Initializes a new instance of DictionaryPasswordGeneratorProfile /// </summary> public GeneratorOptions() { WordLength = 6; SubstituteCharacters = false; SubstitutionList = string.Empty; CapitalizationType = CapitalizationTypes.None; }
/// <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); }