Exemple #1
0
        public static int CalcPasswordStrength(PasswordParts parts)
        {
            int strength = 0;

            strength  = 4 * parts.passwordLength;
            strength += 4 * parts.numsCount;
            if (parts.upperLettersCount != 0)
            {
                strength += (parts.passwordLength - parts.upperLettersCount) * 2;
            }
            if (parts.lowerLettersCount != 0)
            {
                strength += (parts.passwordLength - parts.lowerLettersCount) * 2;
            }
            if (parts.numsCount == 0)
            {
                strength -= parts.passwordLength;
            }
            if (parts.lettersCount == 0)
            {
                strength -= parts.passwordLength;
            }
            if (parts.duplicatesCount != 0)
            {
                strength -= parts.duplicatesCount;
            }

            return(strength);
        }
Exemple #2
0
 static void Main(string[] args)
 {
     if (args.Length != 1)
     {
         Console.WriteLine("Invalid argument count.\nUsage PasswordStrength.exe <password>.");
     }
     else
     {
         PasswordParts parts            = CalcPasswordParts(args[0]);
         int           passwordStrength = CalcPasswordStrength(parts);
         Console.WriteLine(passwordStrength);
     }
 }
Exemple #3
0
        public static PasswordParts CalcPasswordParts(string password)
        {
            PasswordParts parts = new PasswordParts();

            parts.passwordLength = password.Length;
            Dictionary <char, int> symbols = new Dictionary <char, int>();

            for (int i = 0; i < password.Length; ++i)
            {
                if (symbols.ContainsKey(password[i]))
                {
                    symbols[password[i]] += 1;
                }
                else
                {
                    symbols.Add(password[i], 1);
                }

                if (password[i] >= 'A' && password[i] <= 'Z')
                {
                    ++parts.lettersCount;
                    ++parts.upperLettersCount;
                }
                else if (password[i] >= 'a' && password[i] <= 'z')
                {
                    ++parts.lettersCount;
                    ++parts.lowerLettersCount;
                }
                else if (password[i] >= '0' && password[i] <= '9')
                {
                    ++parts.numsCount;
                }
                else
                {
                    Console.WriteLine("Invalid symbols in password.");
                    Environment.Exit(1);
                }
            }

            foreach (var i in symbols)
            {
                if (i.Value > 1)
                {
                    parts.duplicatesCount += i.Value;
                }
            }

            return(parts);
        }