[英]random generator won't generate more than 1 password
我在Windows窗体中创建了一个随机密码生成器。
用户将选择密码的长度和将在Richtextbox中生成的密码数。
当我想生成多个密码时,就会出现问题。
无论我怎么做,一次都不会生成多个密码。
在下面发布代码。
string passwords = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890?!/@£#$%&[]+``^~*";
Random pass = new Random();
string passwordline { get; set; }
private void button1_Click(object sender, EventArgs e)
{
passwordline = "";
int passwordsNum = (int)numericUpDown1.Value;
int passwordLength = (int)numericUpDown2.Value;
int length = 0;
for (int i = 0; i<passwordsNum; i++)
{
for (int i2 = 0; i2 < passwordLength; i2++)
{
int randomnumbers = pass.Next(passwords.Length);
passwordline += passwords[randomnumbers];
length++;
if (passwordline.Length == passwordLength)
{
richTextBox1.Text += passwordline + Environment.NewLine;
}
}
}
}
似乎您没有在每次新运行时都将密码重置为空。 尝试将代码更改为此:
for (int i = 0; i<passwordsNum; i++)
{
passwordline = "";
for (int i2 = 0; i2 < passwordLength; i2++)
{
//Other code is the same
}
}
您只需要在两个密码之间添加新行,现在您就可以将“连接”到一个密码中的字符序列生成(并消除一些错误):
string passwordline = "";
int passwordsNum = (int)numericUpDown1.Value;
int passwordLength = (int)numericUpDown2.Value;
for (int i = 0; i<passwordsNum; i++) {
passwordline = "";
for (int i2 = 0; i2 < passwordLength; i2++) {
int randomnumbers = pass.Next(passwords.Length);
passwordline += passwords[randomnumbers];
}
richTextBox1.Text += passwordline+"\n";
}
该代码也进行了更优化:在for
循环中使用if
语句,而该代码从不执行,而应该在语句末尾执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.