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";
}
代码仅供参考。