日期:2014-05-18  浏览次数:20407 次

产生验证码随机数的一个问题
private string GenerateCheckCode()
{
int number;
string strCode = string.Empty;

//随机数种子
Random random = new Random();

for(int i = 0;i < 4;i++) //校验码长度为4
{
//随机的整数
number = random.Next();

//字符从0-9,A-Z中随机产生,对应的ASCII码分别为
//48-57,65-90
number = number % 36;
if (number < 10)
{
number += 48;
}
else
{
number += 55;
}

strCode += ((char)number).ToString();
}

//在Cookie中保存校验码
Response.Cookies.Add(new HttpCookie("CheckCode", strCode));
return strCode;
}
里面number = number % 36;,这一句是什么意思,有什么用呢、改成
         //int n = random.Next(26); // 26: a - z 字符
  //validateCode += (char)(n + 65); // 将数字转换成大写字母

  int n = random.Next(10); //数字
  validateCode += n.ToString();
这样可以吗?

------解决方案--------------------
英文字母个数 + 数字个数 = 36

对36取余是为了保证值在 0-35之间。