public string Generate(int passwordLength, PasswordTypeModel passwordType) { string password = ""; var symbolsQueue = new List <char>(); var symbolsPool = new List <string>() { LowerL }; TryAddSymbolType(passwordType.IsNumberRequired, symbolsPool, Nums, symbolsQueue); TryAddSymbolType(passwordType.IsUpperRequired, symbolsPool, UpperL, symbolsQueue); TryAddSymbolType(passwordType.IsSymbolRequired, symbolsPool, Symb, symbolsQueue); symbolsQueue.Add(LowerL[_rand.Next(0, LowerL.Length)]); // Алгоритм случайной генерации пароля в соответствии с условиями. for (int i = 0; i < passwordLength; i++) { if (symbolsQueue.Count == 0) { var randomSymbolsPool = symbolsPool[_rand.Next(0, symbolsPool.Count)]; password += randomSymbolsPool[_rand.Next(0, randomSymbolsPool.Length)]; continue; } var symbolIndex = _rand.Next(0, symbolsQueue.Count); password += symbolsQueue[symbolIndex]; symbolsQueue.RemoveAt(symbolIndex); } return(password); }
// Генерирует пароль. private void genButton_Click(object sender, RoutedEventArgs e) { // Получить желаемую длину пароля из TextBox. int passwordLength = 0; if (lengthTxtBx.Text != "") { passwordLength = int.Parse(lengthTxtBx.Text); } bool isNum = isNumBox.IsChecked.HasValue ? isNumBox.IsChecked.Value : false; bool isUpper = isUpperBox.IsChecked.HasValue ? isUpperBox.IsChecked.Value : false; bool isSymbol = isSymbBox.IsChecked.HasValue ? isSymbBox.IsChecked.Value : false; var passwordType = new PasswordTypeModel(isNum, isUpper, isSymbol); string password = passwordGen.Generate(passwordLength, passwordType); // Задать TextBox сгенерированный пароль. passTxtBx.Text = password; }