public StringPatternAnalyzerResult Run() { SpecialCharacter.ResetMiddleSpecialCharacterCount(); SequentialCharacter.ResetSequentialCharacterCount(); RepeatedCharacters repeatedCharacters = new RepeatedCharacters { Count = 0, Deduction = 0 }; for (int index = 0; index < password.Length; index++) { CheckCharacter(index); CheckRepeatedCharacters(index, ref repeatedCharacters); } sequentialLetters = CheckSequentialLetters(); sequentialNumbers = CheckSequentialNumbers(); sequentialSymbols = CheckSequentialSymbols(); int score = 0; ApplyPositiveMultipliers(ref score); ApplyNagativeMultipliers(ref score, repeatedCharacters); return(StringPatternAnalyzerResult.FromScore(score)); }
internal StringPatternAnalyzerResult Run() { SpecialCharacter.ResetMiddleSpecialCharacterCount(); SequentialCharacter.ResetSequentialCharacterCount(); RepeatedCharacters repeatedCharacters = new RepeatedCharacters { Count = 0, Deduction = 0 }; for (int index = 0; index < password.Length; index++) { CheckCharacter(index); CheckRepeatedCharacters(index, ref repeatedCharacters); } throw new NotImplementedException(); }
private SequentialCharacter CheckSequentialNumbers() { const string numbers = "01234567890"; SequentialCharacter sequentialNumbers = new SequentialCharacter(); /* Check for sequential numeric string patterns (forward and reverse) */ for (int s = 0; s < numbers.Length - 2; s++) { string sequence = numbers.Substring(s, 3); string reversedSequence = sequence.Reverse().ToString(); if (password.Contains(sequence) || password.Contains(reversedSequence)) { sequentialNumbers.Count++; sequentialNumbers.SequentialCount++; } } return(sequentialNumbers); }
private SequentialCharacter CheckSequentialSymbols() { const string symbols = " !\"#$%&\'()*+,-./:;<=>?@[\\]^_{|}~!\"§$%&/()=?{[]}\\,.-;:_"; SequentialCharacter sequentialSymbols = new SequentialCharacter(); /* Check for sequential symbol string patterns (forward and reverse) */ for (int s = 0; s < symbols.Length - 2; s++) { string sequence = symbols.Substring(s, 3); string reversedSequence = sequence.Reverse().ToString(); if (password.Contains(sequence) || password.Contains(reversedSequence)) { sequentialSymbols.Count++; sequentialSymbols.SequentialCount++; } } return(sequentialSymbols); }
private SequentialCharacter CheckSequentialLetters() { const string alphabet = "abcdefghijklmnopqrstuvwxyz"; const string keyboard = "qwertyuiopasdfghjklzxcvbnm"; SequentialCharacter sequentialLetters = new SequentialCharacter(); /* Check for sequential alpha string patterns (forward and reverse) */ for (int s = 0; s < 23; s++) { string sequence = alphabet.Substring(s, 3); string reversedSequence = sequence.Reverse().ToString(); string keyboardSequence = keyboard.Substring(s, 3); string reversedKeyboardSequence = keyboardSequence.Reverse().ToString(); if (password.Contains(sequence, StringComparison.OrdinalIgnoreCase) || password.Contains(reversedSequence, StringComparison.OrdinalIgnoreCase) || password.ToLower().Contains(keyboardSequence) || password.ToLower().Contains(reversedKeyboardSequence)) { sequentialLetters.Count++; sequentialLetters.SequentialCount++; } } return(sequentialLetters); }