知识大全 ASP.NET1.1验证码产生的原理及应用

Posted

篇首语:不畏过往,不惧将来。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET1.1验证码产生的原理及应用相关的知识,希望对你有一定的参考价值。

ASP.NET1.1验证码产生的原理及应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  ASP NET 验证码实现原理

  通过随机函数产生验证码元素 将数值型的验证码元素转换成字符型然后再连成字符串 将验证码字符串写入Cookie以供验证时调用

  通过后台动态绘制位图的方法 绘制一个指定大小的位图 然后在空白位图画出底纹 验证码字体 和边框

  ASP NET 验证码实现代码

  ( )Login aspx(登录页前台)

  

    < %@ Page language= c#  Codebehind= Login aspx cs  AutoEventWireup= false  Inherits= Validator Login  %>  < !DOCTYPE HTML PUBLIC  //W C//DTD HTML   Transitional//EN  >  < HTML>      < HEAD>          < title>Login< /title>          < meta name= GENERATOR  Content= Microsoft Visual Studio  NET  >          < meta name= CODE_LANGUAGE  Content= C# >          < meta name= vs_defaultClientScript  content= JavaScript >          < meta name= vs_targetSchema  content= >      < /HEAD>      < body MS_POSITIONING= GridLayout >          < form id= Form  method= post  runat= server >              < asp:button id= Button  style= Z INDEX:  ; LEFT:  px; POSITION: absolute; TOP:  px  runat= server                  Width= px  Text= 提交 >< /asp:button>              < IMG src= CheckCode aspx >              < asp:label id= lblMessage  style= Z INDEX:  ; LEFT:  px; POSITION: absolute; TOP:  px                  runat= server >< /asp:label>              < asp:textbox id= txtCheckCode  style= Z INDEX:  ; LEFT:  px; POSITION: absolute; TOP:  px                  runat= server  Width= px >< /asp:textbox>          < /form>      < /body>  < /HTML>  

  ( )Login aspx cs(登录页后台)

  

    using System;  using System Collections;  using System ComponentModel;  using System Data;  using System Drawing;  using System Web;  using System Web SessionState;  using System Web UI;  using System Web UI WebControls;  using System Web UI HtmlControls;   namespace Validator        /**//// < summary>      /// Login 的摘要说明      /// < /summary>      public class Login : System Web UI Page                protected System Web UI WebControls Button Button ;          protected System Web UI WebControls Label lblMessage;          protected System Web UI WebControls TextBox txtCheckCode;                private void Page_Load(object sender  System EventArgs e)                        // 在此处放置用户代码以初始化页面                     Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码          override protected void OnInit(EventArgs e)                        //              // CODEGEN: 该调用是  Web 窗体设计器所必需的              //              InitializeComponent();              base OnInit(e);                              /**//// < summary>          /// 设计器支持所需的方法   不要使用代码编辑器修改          /// 此方法的内容          /// < /summary>          private void InitializeComponent()                            this Button Click += new System EventHandler(this Button _Click);              this Load += new System EventHandler(this Page_Load);                     #endregion           private void Button _Click(object sender  System EventArgs e)                        if(Request Cookies[ CheckCode ] == null)                                 lblMessage Text =  您的浏览器设置已被禁用 Cookies 您必须设置浏览器允许使用 Cookies 选项后才能使用本系统 ;                  lblMessage Visible = true;                  return;                            if(String Compare(Request Cookies[ CheckCode ] Value  txtCheckCode Text  false) !=  ) //参数为false时为区分大小写                                lblMessage Text =  验证码错误 请输入正确的验证码 ;                  lblMessage Visible = true;                  return;                             else                                 lblMessage Text =  通过验证 ;                  lblMessage Visible = true;                  return;                                   

  ( ) CheckCode aspx(验证页前台)

  

    < %@ Page language= c#  Codebehind= CheckCode aspx cs  AutoEventWireup= false  Inherits= Validator CheckCode  %>  < !DOCTYPE HTML PUBLIC  //W C//DTD HTML   Transitional//EN  >    < >    < head>      < title>CheckCode< /title>      < meta name= GENERATOR  Content= Microsoft Visual Studio  NET  >      < meta name= CODE_LANGUAGE  Content= C# >      < meta name=vs_defaultClientScript content= JavaScript >      < meta name=vs_targetSchema content= >    < /head>    < body MS_POSITIONING= GridLayout >            < form id= Form  method= post  runat= server >          < FONT face= 宋体 >< /FONT>      < /form>          < /body>  < />   

  ( )CheckCode aspx cs(验证页后台)

  

    using System;  using System Collections;  using System ComponentModel;  using System Data;  using System Drawing;  using System Web;  using System Web SessionState;  using System Web UI;  using System Web UI WebControls;  using System Web UI HtmlControls;   namespace Validator        /**//// < summary>      /// CheckCode 的摘要说明      /// < /summary>      public class CheckCode : System Web UI Page                private void Page_Load(object sender  System EventArgs e)                        // 在此处放置用户代码以初始化页面              this CreateCheckCodeImage(GenerateCheckCode());                     Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码          override protected void OnInit(EventArgs e)                        //              // CODEGEN: 该调用是  Web 窗体设计器所必需的              //              InitializeComponent();              base OnInit(e);                              /**//// < summary>          /// 设计器支持所需的方法   不要使用代码编辑器修改          /// 此方法的内容          /// < /summary>          private void InitializeComponent()                            this Load += new System EventHandler(this Page_Load);                    #endregion           private string GenerateCheckCode()                                              int number;                                    char code;                                    string checkCode = String Empty;                                                 System Random random = new Random();                                     for(int i= ; i<  ; i++)                                       //随机产生一个整数                                               number = random Next();                                   //如果随机数是偶数 取余选择从[ ]                                               if(number %   ==  )                                                          code = (char)(  + (char)(number %  ));                                               else                                               //如果随机数是奇数 选择从[A Z]                                                          code = (char)( A  + (char)(number %  ));                                                    checkCode += code ToString();                                                                         Response Cookies Add(new HttpCookie( CheckCode  checkCode));                                     return checkCode;                                             //建立一个随机图形                         private void CreateCheckCodeImage(string checkCode)                                                             if(checkCode == null || checkCode Trim() == String Empty)                                               return;                           //建立一个位图文件 确立长宽                                                     System Drawing Bitmap image = new System Drawing Bitmap((int)Math Ceiling((checkCode Length *  ))   );                                    Graphics g = Graphics FromImage(image);                                     try                                                                                   //生成随机生成器                                               Random random = new Random();                                                //清空图片背景色                                               g Clear(Color White);                                                //画图片的背景噪音点                                               for(int i= ; i<  ; i++)                                                                                                         int x = random Next(image Width);                                                          int y = random Next(image Height);                                                           image SetPixel(x  y  Color FromArgb(random Next()));                                                                                  //把产生的随机数以字体的形式写入画面                                               Font font = new System Drawing Font( Arial    (System Drawing FontStyle Bold | System Drawing FontStyle Italic));                                               System Drawing Drawing D LinearGradientBrush brush = new System Drawing Drawing D LinearGradientBrush(new Rectangle(    image Width  image Height)  Color Blue  Color DarkRed   f  true);                                               g DrawString(checkCode  font  brush     );                                                //画图片的边框线                                               g DrawRectangle(new Pen(Color Silver)      image Width     image Height    );                                                System IO MemoryStream ms = new System IO MemoryStream();                                               image Save(ms  System Drawing Imaging ImageFormat Gif);                                               Response ClearContent();                                               Response ContentType =  image/Gif ;                                               Response BinaryWrite(ms ToArray());                                                                        finally                                                                                   g Dispose();                                               image Dispose();                                                                        

  ASP NET 验证码主要函数分析

   通过随机函数(Random)先产生验证码组成元素(这里为五位) 并将其转换为字符串

  (属性为只读) 完成后写入 Cookie 中去以供验证时调用

   将验证码字符串写入图形

  ( )建立一个位图文件确定长和宽

  

    System Drawing Bitmap image = new System Drawing Bitmap((int)Math Ceiling((checkCode Length *  ))   );   

  (a)System Drawing [C#] Bitmap(int width int height)

  (b)double Math Ceiling (double a) 返回大于或等于指定数字的最小整数

  ( )画图片的背景噪音点( 个)

  

    for(int i= ; i<  ; i++)     int x = random Next(image Width);   int y = random Next(image Height);   image SetPixel(x  y  Color FromArgb(random Next()));      

  (a) public virtual int Next(int maxValue);返回一个小于所指定最大值的非负随机数 参数 maxValue 要生成的随机数的上限 maxValue 必须大于或等于零

  (b) image SetPixel(int x int y Color color) 参数 x 要设置的像素的 x 坐标 y 要设置的像素的 y 坐标 color Color 结构 它表示要分配给指定像素的颜色

  (c) Color FromArgb(int argb) 参数 argb 指定 位 ARGB 值的值

  ( )把产生的随机数以字体的形式写入位图 Graphics DrawString(string s Font font Brush brush float x float y)

  参数 s 要绘制的字符串 font Font 对象 它定义字符串的文本格式

  brush Brush 对象 它确定所绘制文本的颜色和纹理

  x 所绘制文本的左上角的 x 坐标

  y 所绘制文本的左上角的 y 坐标 (在指定位置并且用指定的 Brush 和 Font 对象绘制指定的文本字符串)

  ( ) 画图片的边框线: public void DrawRectangle(Pen pen int x int y int width int height);绘制由坐标对 宽度和高度指定的矩形

  参数 pen Pen 对象 它确定矩形的颜色 宽度和样式

  x 要绘制的矩形的左上角的 x 坐标

  y 要绘制的矩形的左上角的 y 坐标

  width 要绘制的矩形的宽度 height 要绘制的矩形的高度

  ( ) 将图片以二进制流的方式输出加上格式并可显示出来

以上就是 中验证码产生的原理及其应用 cha138/Article/program/ASP/201311/21722

相关参考

知识大全 JSP验证码大全之验证码使用与乱码解决

JSP验证码大全之验证码使用与乱码解决  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文中介绍

知识大全 asp 生成图片验证码

  下面一款代码是一个用asp生成图片验证码的程序哦关于验证代码写程序的大多都会知道哦下面来看看这款图片验证码的生成方式吧cha138/Article/program/net/201311/

知识大全 使用kaptcha生成验证码

  kaptcha是一个简单好用的验证码生成工具通过配置可以自己定义验证码大小颜色显示的字符等等      下载kaptcha &

知识大全 ASP.NET 做验证码

ASP.NET做验证码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  显示验证码的界面前台<

知识大全 淘宝网里那么多卖验证码的,是怎么做到的,难道有那么多个手机吗?而且验证码价格那么贵,感觉好坑阿,谁知道?

淘宝网里那么多卖验证码的,是怎么做到的,难道有那么多个手机吗?而且验证码价格那么贵,感觉好坑阿,谁知道?那些卖验证码的当然不是有那么多手机号,这些都是卡商提供的,不信你可以拨打一下号码,要不就是空号,

知识大全 ASP.NET验证码技术

ASP.NET验证码技术  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  验证码技术是目前很多WE

知识大全 验证码为什么老显示出“看不清,换张图”求大神帮助

验证码为什么老显示出“看不清,换张图”求大神帮助那是在提醒你,看不清楚的话,点它再换一张图看。验证码为什么出错求大神帮助这是关于很多的问题;可能是你长时间没有输入验证码,导致验证码失效;可能是你的电脑

知识大全 怎样用java实现验证码

  现在许多系统的注册登录或者发布信息模块都添加的随机验证码功能就是为了避免自动注册程序或者自动发布程序的使用  验证码实际上就是随机选择一些字符以图片的形式展现在页面上如果进行提交操作的同时需要将图

知识大全 C#中生成验证码的类

C#中生成验证码的类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在很多网站中都会用到验证码的

知识大全 支持中文的验证码生成程序.

  一个验证图形生成程序支持中文的验证码生成程序写的时候没有仔细看可能有小问题但是运行没有任何问题  使用方法:   <tr><td>&n