zoukankan      html  css  js  c++  java
  • 别人写的图片验证码程序

     

    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上断点调试的却又可以生成随机的字符串呢,这个我一直想不明白,请高手指教!

    ???刚下班,晚上回去操练操练!

  • 相关阅读:
    nopCommerce中缓存学习
    EF
    路由
    webapi的加密方式
    生成N位数字随机数
    C# DataTable 转 实体类
    WebBrowser 打印
    文件上传控件,格式统一
    sqlserver 表循环-游标、表变量、临时表
    VB 老旧版本维护系列---迷之集合- dataTable
  • 原文地址:https://www.cnblogs.com/wppt/p/474569.html
Copyright © 2011-2022 走看看