IT猫扑网:您身边最放心的安全下载站! 最新更新| 软件分类| 专题汇总| 手机版

您当前所在位置:IT猫扑网 > 网络编程 > .Net编程 > .NET实现中英文验证码

.NET实现中英文验证码

时间:2015-06-28 00:00 来源:IT猫扑网|http://www.itmop.com/ 作者:网管联盟 我要评论(0)

  最终效果如图:

   

  CheckCode.aspx.cs代码如下

  1    protected void Page_Load(object sender, EventArgs e)

  2    {

  3  //获取GB2312编码页(表)

  4  /**//**

  5   * 生成中文验证验码所要使用的方法

  6   * 注,生成中文验证码时要改变一下生成验证码图片的宽度

  7   * var imageCode = new System.Drawing.Bitmap((int)Math.Ceiling((code.Length * 22.5)), 23); //定义图片的宽度和高度

  8   **/

  9

  10  //var gb = Encoding.GetEncoding(&gb2312&);

  11

  12  /**/////调用函数产生4个随机中文汉字编码

  13  //object[] bytes = CreateRegionCode(4);

  14

  15  /**/////根据汉字编码的字节数组解码出中文汉字

  16  //var sbCode = new StringBuilder().Append(gb.GetString((byte[])Convert.ChangeType(bytes[0], typeof(byte[]))))

  17  //    .Append(gb.GetString((byte[])Convert.ChangeType(bytes[1], typeof(byte[]))))

  18  //    .Append(gb.GetString((byte[])Convert.ChangeType(bytes[2], typeof(byte[]))))

  19  //    .Append(gb.GetString((byte[])Convert.ChangeType(bytes[3], typeof(byte[]))));

  20  //CreateCheckCodeImage(sbCode.ToString());

  21

  22  CreateCheckCodeImage(GenerateCheckCode());      //生成数字英文所要使用的方法

  23    }

  24

  25    生成汉字验证码#region 生成汉字验证码

  26    /**//// <summary>

  27    /// 此函数在汉字编码范围内随机创建含两个元素的十六进制字节数组,每个字节数组代表一个汉字,并将四个字节数组存储在object数组中。

  28    /// </summary>

  29    /// <param name=&strLength&>代表需要产生的汉字个数</param>

  30    /// <returns></returns>

  31    static object[] CreateRegionCode(int strLength)

  32    {

  33  var rBase = new[]

  34      {

  35    &0&,&1&,&2&,&3&,&4&,&5&,&6&,&7&,&8&,&9&,&a&,&b&,&c&,&d&,&e&,&f&

  36      };

  37

  38  var random = new Random();

  39  var bytes = new object[strLength];

  40

  41  /**//*每循环一次产生一个含两个元素的十六进制字节数组,并将其放入bject数组中

  42   每个汉字有四个区位码组成

  43   区位码第1位和区位码第2位作为字节数组第一个元素

  44   区位码第3位和区位码第4位作为字节数组第二个元素

  45  */

  46

  47  for (int i = 0; i < strLength; i++)

  48  {

  49      //区位码第1位

  50      var r1 = random.Next(11, 14);

  51      var str_r1 = rBase[r1].Trim();

  52

#p#副标题#e#

  53      random = new Random(r1 * unchecked((int)DateTime.Now.Ticks) + i);   //更换随机数发生器的种子避免产生重复值

  54

  55      var r2 = 0;

  56      if (r1 == 13)

  57    r2 = random.Next(0, 7);

  58      else

  59    r2 = random.Next(0, 16);

  60

  61      var str_r2 = rBase[r2].Trim();

  62

  63      //区位码第3位

  64      random = new Random(r2 * unchecked((int)DateTime.Now.Ticks) + i);

  65      var r3 = random.Next(10, 16);

  66      var str_r3 = rBase[r3].Trim();

  67

  68      //区位码第4位

  69      random = new Random(r3 * unchecked((int)DateTime.Now.Ticks) + i);

  70      var r4 = 0;

  71      if (r3 == 10)

  72    r4 = random.Next(1, 16);

  73      else if (r3 == 15)

  74    r4 = random.Next(0, 15);

  75      else

  76    r4 = random.Next(0, 16);

  77

  78      var str_r4 = rBase[r4].Trim();

  79

  80      var byte1 = Convert.ToByte(str_r1 + str_r2, 16);

  81      var byte2 = Convert.ToByte(str_r3 + str_r4, 16);

  82      //将两个字节变量存储在字节数组中

  83      var str_r = new[] { byte1, byte2 };

  84

  85      //将产生的一个汉字的字节数组放入object数组中

  86      bytes.SetValue(str_r, i);

  87    

关键词标签:.NET,中英文验证码

相关阅读 ASP.NET创建XML Web服务全接触 如何提高ASP.NET页面载入速度的方法 .net导出海量数据到execl文件 ASP.NET 2.0程序安全的基础知识 ASP.NET中MD5与SHA1加密的几种方法 在.net开发中几个重要的认识误区

文章评论
发表评论

热门文章 在ASP.NET MVC中实现大文件异步上传 在ASP.NET MVC中实现大文件异步上传 在.NET环境下为网站增加IP过滤功能 在.NET环境下为网站增加IP过滤功能 诛仙3飞升任务怎么做-诛仙3飞升任务流程最新2022 诛仙3飞升任务怎么做-诛仙3飞升任务流程最新2022 ASP.NET 如何避免页面重新整理时重复送出 ASP.NET 如何避免页面重新整理时重复送出 钟离圣遗物推荐-原神钟离圣遗物词条 钟离圣遗物推荐-原神钟离圣遗物词条

相关下载

人气排行 诛仙3飞升任务怎么做-诛仙3飞升任务流程最新2022 asp.net表单提交方法GETPOST 在ASP.NET中如何判断用户IE浏览器的版本 Asp.net中messagebox的实现方法 Asp.net中的web.config配置 在ASP.NET MVC中实现大文件异步上传 asp.net获取URL和IP地址 FileUpload上传多文件出现错误的解决方法 ASP.NET Web.config配置详解 Asp.net常用的51个代码(非常实用) ASP.NET打开word文档出错的解决办法 让你的.NET程序兼容不同版本的Dll文件