很多论坛或BLOG中都有验证码,其实现方法无外乎生成一个随机的编码,然后把它画成一个图像,同时在图像中生成一些迷惑点。以下是实现方式:
//生成随机数
public string CreateRandomCode(int codeCount) {
string allChar = "0,1,2,3,4,5,6,7,8,9,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";
string[] allCharArray = allChar.Split(',');
string randomCode = "";
int temp = -1;
Random rand = new Random();
for (int i = 0; i < codeCount; i++)
{
if (temp != -1)
{
rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
}
int t = rand.Next(36);
if (temp != -1 && temp == t)
{
return CreateRandomCode(codeCount);
}
temp = t;
randomCode += allCharArray[t];
}
return randomCode;
}
//生成随机数图片数据
public void CreateImage(string checkCode)
{
int iwidth = (int)(checkCode.Length * 15);
System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 25);
Graphics g = Graphics.FromImage(image);
g.Clear(Color.White);
//定义颜色
Color[] c = { Color.Black,
Color.Red,
Color.DarkBlue,
Color.Green,
Color.Orange,
Color.Brown,
Color.DarkCyan,
Color.Purple
};
//定义字体
string[] font = { "Verdana",
"Microsoft Sans Serif",
"Comic Sans MS",
"Arial",
"宋体"
};