繁体   English   中英

随机生成器生成的密码不会超过1个

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM