别人写的图片验证码程序
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上断点调试的却又可以生成随机的字符串呢,这个我一直想不明白,请高手指教!
???刚下班,晚上回去操练操练!
{
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上断点调试的却又可以生成随机的字符串呢,这个我一直想不明白,请高手指教!
???刚下班,晚上回去操练操练!
相关文章推荐
- 两段经典的图片验证码程序之二
- 发布一个很COOL的图片验证码程序[含源码]
- java生成图片验证码示例程序
- 中文图片验证码程序。
- 一个很COOL的图片验证码程序[含源码] 转
- 两段经典的图片验证码程序之二
- asp.net发布一个很COOL的图片验证码程序[含源码]
- 晒一晒自己的“图片验证码”程序 asp.net
- 用一般处理程序做的图片验证码
- 两段经典的图片验证码程序之一
- 两段经典的图片验证码程序之一
- vc 加载绝对路径图片的程序怎么能在别人的机子上运行
- 发布一个很COOL的图片验证码程序[含源码]
- 一个很COOL的图片验证码程序[含源码]
- 发布一个很COOL的图片验证码程序[含源码]
- 一个很COOL的图片验证码程序[含源码]
- 发布一个很COOL的图片验证码程序[含源码](转)
- 防识别的图片验证码程序(一)
- 发布一个很COOL的图片验证码程序[含源码]
- 微信小程序多张图片和表单一起上传,验证表单及进度条的实现完整代码