随机生成指定长度的密码(必须包含大写字母,小写字母,数字,指定的字符)

c#,随机生成密码

代码如下:

        //判断长度是否大于等于4
        public Boolean Check_N(int n)
        {
            if (n < 4) { return false; }
            else return true;
        }

        //判断字符串是否为空
        public Boolean isNull_Char(string c)
        {
            if (c ==null || "".Equals(c)) { return true; }
            else return false;
        }
        
	   //生成密码
        public string pass(int n, string c)
        {
            string str = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";    //62(1-10,11-36,37-62)
            string RStr, newpass;
            RStr = str + c;     //加上输入的字符串c
            int len = RStr.Length;
            char[] p = RStr.ToCharArray();      //转换为字符数组
            //随机生成密码
            if (Check_N(n) && !isNull_Char(c))
            {                
                bool bdone = false;               
                do
                {
                    newpass = "";
                    int count0 = 0, count1 = 0, count2 = 0, count3 = 0;
                    //生成长度为n的密码
                    for (int i = 0; i < n; i++)
                    {
                        int intR = new Random(Guid.NewGuid().GetHashCode()).Next(0,len);
                        //每次轮流加上一个随机字符
                        newpass = newpass + p[intR];        

                        if (('0' <= p[intR]) && (p[intR] <= '9')) { count0++; }             //数字个数
                        else if (('a' <= p[intR]) && (p[intR] <= 'z')) { count1++; }        //小写个数
                        else if (('A' <= p[intR]) && (p[intR] <= 'Z')) { count2++; }        //大写个数
                        else count3++;      //字符个数
                    }

                    //判断是否每个都有包含
                    if (count0 * count1 * count2 * count3 == 0)
                        bdone = true;  
                    else bdone = false;
                } while (bdone);    //没包含,重新获取
                return newpass;
            }
            else return "error string";
        }

代码仅供参考。

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值