Я пытаюсь создать базовый генератор случайных паролей в форме Windows. У меня есть список слов (все в нижнем регистре), четыре из которых выбираются случайным образом. Каждое слово передается функции для случайного изменения регистра (начинает с заглавной буквы, делает с заглавной все слово или просто возвращает строку в нижнем регистре), а затем добавляется в другой список следующим образом:
var dictionary = new List<String> { "aaron", "abandoned", "aberdeen" etc... };
int index;
index = random.Next(dictionary.Count);
string one = dictionary[index];
one = randomCase(one);
pwarray.Add(one);
Затем этот код дублируется для строк two
, three
и four
. Моя функция рандомизировать случай, хотя и не фантазия, такова:
private string randomCase (string word)
{
string changed;
Random r = new Random();
int n = r.Next(1, 29);
// Output number to check it's not the same each time
MessageBox.Show(n.ToString());
if (n >= 1 || n <= 9)
{
// First letter capatalised
changed = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(word.ToLower());
return changed;
}
else if (n >= 10 || n <= 19)
{
// Word capitalised
changed = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(word.ToUpper());
return changed;
}
else if (n >= 20 || n <= 29)
{
// Word left as lower case
return word;
}
return null;
}
Я добавил окна выходных сообщений, чтобы показать, что такое случайное число n
, чтобы помочь в устранении неполадок. Когда я запускаю приложение, я получаю разные числа из моей функции randomCase
для n
:
4 - Первый символ с большой буквы
17 - Слово с заглавной буквы
20 - Слово оставлено в нижнем регистре
24 - слово оставлено в нижнем регистре
Однако во всех четырех словах первая буква была заглавной:
Я сгенерировал много паролей, и они всегда выглядят одинаково - только первая буква заглавная. Кто-нибудь может предложить какие-либо предложения?
char[] passwordChars = new char[] { 'a', 'b', 'c', etc. }
, затем создайте построитель строк. Затем добавьте случайный индекс изpasswordChars
passwordLen раз. - person jjxtra   schedule 11.01.2020TextInfo.ToTitleCase
... и вы использовали его в 2 случаях ... но, очевидно, используется только первый ... проблема в разнице междуand
иor
... числа между 1 и 29 всегда больше ( или экв.) больше 1 или меньше (или экв.) 9 - person Selvin   schedule 11.01.2020(n >= 1 || n <= 9)
должно быть(n >= 1 && n <= 9)
. - person John Wu   schedule 11.01.2020