您的位置:首页 > 其它

别人写的图片验证码程序

2006-08-11 18:06 387 查看
public void creatImage()
{
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[] myStr=allChar.Split(',');
int num=0,num1=0,num2=0,num3=0;
string myChar="";
Random ran=new Random();
num=ran.Next(myStr.Length);
num1=ran.Next(myStr.Length);
num2=ran.Next(myStr.Length);
num3=ran.Next(myStr.Length);
myChar=myStr[num1]+myStr[num]+myStr[num2]+myStr[num3];
//建立位图对象
Bitmap newBitmap = new Bitmap(36,16,PixelFormat.Format32bppArgb);
//根据上面创建的位图对象创建绘图面
Graphics g = Graphics.FromImage(newBitmap);
//以指定的颜色填充矩形区
g.FillRectangle(new SolidBrush(Color.White), new Rectangle(0,0,50,16));
//创建字体对象
Font textFont = new Font("Times New Roman",10);
//创建RectangleF结构指定一个区域
RectangleF rectangle = new RectangleF(0,0,50,16);
//使用指定的颜色填充上面RectangleF结构指定的矩形区域
g.FillRectangle(new SolidBrush(Color.BurlyWood), rectangle);
//在上面填充的矩形区域中填充上面生成的随机数
g.DrawString(myChar, textFont, new SolidBrush(Color.Blue), rectangle);
//把创建的位图保存到指定的路径
newBitmap.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
Session["num"]=myChar;

}

但因为我是个新手,对.NET的安全等方面的没有考虑过,不知这样实现图片验证不知会有什么缺点,因为我看过其它人写的图片验证码的程序太烦了.请各位多多指教.
顺便请教个问题,就是上面的随机生成数字的
Random ran=new Random();
num=ran.Next(myStr.Length);
num1=ran.Next(myStr.Length);
num2=ran.Next(myStr.Length);
num3=ran.Next(myStr.Length);
myChar=myStr[num1]+myStr[num]+myStr[num2]+myStr[num3];
这段程序我换为
string myChar="";
string[] Str=new string[4];
for(int i=0;i<4;i++)
{
int num=0;
Random ran=new Random();
num=ran.Next(myStr.Length);
Str[i]=myStr[num];
myChar+=Str[i];
为什么生成的是全部一样的字符串呢,但要是我VS上断点调试的却又可以生成随机的字符串呢,这个我一直想不明白,请高手指教!

???刚下班,晚上回去操练操练!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: