加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#随机密码生成器

发布时间:2020-12-15 18:25:06 所属栏目:百科 来源:网络整理
导读:这是代码:(passwordLengthBox是NumericUpDown Box,r和k是随机数) private void generateButton_Click(object sender,EventArgs e) { int r,k; int passwordLength = (Int32)passwordLengthBox.Value; string password = ""; char[] upperCase = { 'A','B','
这是代码:(passwordLengthBox是NumericUpDown Box,r和k是随机数)
private void generateButton_Click(object sender,EventArgs e)
            {
                int r,k;
                int passwordLength = (Int32)passwordLengthBox.Value;
                string password = "";
                char[] upperCase = { 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' };
                char[] lowerCase = { 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' };
                int[] numbers = { '0','1','2','3','4','5','6','7','8','9' };
                Random rRandom = new Random();



                for (int i = 0; i < passwordLength; i++)
                {
                    r = rRandom.Next(3);

                    if (r == 0)
                    {
                        k = rRandom.Next(0,25);
                        password += upperCase[k];
                    }

                    else if (r == 1)
                    {
                        k = rRandom.Next(0,25);
                        password += lowerCase[k];
                    }

                    else if (r == 2)
                    {
                        k = rRandom.Next(0,9);
                        password += numbers[k];
                    }

                }

                textBox.Text = password;
            }

这个程序的作用是创建一个随机密码,包括字母(大写和小写)和我选择的长度的数字.
问题是该程序没有像我选择的那样设置密码长度.

例如:如果我在NumericUpDown Box(passwordLengthBox)中键入5,设置密码长度,有时它会给我5个字符长的密码,有时6/7/8个字符长密码.

我的错是什么?

解决方法

问题在这里:
int[] numbers = { '0','9' };

使用该声明,每次将一个数字附加到密码中时,它将被视为ASCII编号,而不是实际值.所以你要添加48到57之间的整数,结果字符串会比预期更长.

例如当6作为随机数生成时,你将类似的东西:((int)’6′).ToString()附加到你的密码变量中,实际上增加了54而不是6.

将该数组声明为char [],它将正常工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读