• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > asp.net下中文验证码,免费开源代码

asp.net下中文验证码,免费开源代码

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了验证码 asp.net,二维码生成 asp.net,asp.net,asp net培训,asp和asp.net的区别等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.Drawing;

public partial class CnCode : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//获取GB2312编码页(表) 
Encoding gb = Encoding.GetEncoding("gb2312");

//调用函数产生4个随机中文汉字编码 
object[] bytes = CreateRegionCode(4);

//根据汉字编码的字节数组解码出中文汉字 
string str1 = gb.GetString((byte[])Convert.ChangeType(bytes[0], typeof(byte[])));
string str2 = gb.GetString((byte[])Convert.ChangeType(bytes[1], typeof(byte[])));
string str3 = gb.GetString((byte[])Convert.ChangeType(bytes[2], typeof(byte[])));
string str4 = gb.GetString((byte[])Convert.ChangeType(bytes[3], typeof(byte[])));

//输出的控制台 
CreateImage(str1 + str2 + str3 + str4);

}

/* 
此函数在汉字编码范围内随机创建含两个元素的十六进制字节数组,每个字节数组代表一个汉字,并将 
四个字节数组存储在object数组中。 
参数:strlength,代表需要产生的汉字个数 
*/
public static object[] CreateRegionCode(int strlength) 
{ 
//定义一个字符串数组储存汉字编码的组成元素 
string[] rBase=new String [16]{"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"}; 

Random rnd=new Random(); 

//定义一个object数组用来 
object[] bytes=new object[strlength]; 

/**//*每循环一次产生一个含两个元素的十六进制字节数组,并将其放入bject数组中 
每个汉字有四个区位码组成 
区位码第1位和区位码第2位作为字节数组第一个元素 
区位码第3位和区位码第4位作为字节数组第二个元素 
*/ 
for(int i=0;i<strlength;i++) 
{ 
//区位码第1位 
int r1=rnd.Next(11,14); 
string str_r1=rBase[r1].Trim(); 

//区位码第2位 
rnd=new Random(r1*unchecked((int)DateTime.Now.Ticks)+i);//更换随机数发生器的种子避免产生重复值 
int r2; 
if (r1==13) 
{ 
r2=rnd.Next(0,7); 
} 
else 
{ 
r2=rnd.Next(0,16); 
} 
string str_r2=rBase[r2].Trim(); 

//区位码第3位 
rnd=new Random(r2*unchecked((int)DateTime.Now.Ticks)+i); 
int r3=rnd.Next(10,16); 
string str_r3=rBase[r3].Trim(); 

//区位码第4位 
rnd=new Random(r3*unchecked((int)DateTime.Now.Ticks)+i); 
int r4; 
if (r3==10) 
{ 
r4=rnd.Next(1,16); 
} 
else if (r3==15) 
{ 
r4=rnd.Next(0,15); 
} 
else 
{ 
r4=rnd.Next(0,16); 
} 
string str_r4=rBase[r4].Trim(); 

//定义两个字节变量存储产生的随机汉字区位码 
byte byte1=Convert.ToByte(str_r1 + str_r2,16); 
byte byte2=Convert.ToByte(str_r3 + str_r4,16); 
//将两个字节变量存储在字节数组中 
byte[] str_r=new byte[]{byte1,byte2}; 

//将产生的一个汉字的字节数组放入object数组中 
bytes.SetValue(str_r,i); 

} 

return bytes; 

}


private void CreateImage(string checkCode)
{
int iwidth = (int)(checkCode.Length * 25);
System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 20);
Graphics g = Graphics.FromImage(image);
Font f = new System.Drawing.Font("Arial", 12, System.Drawing.FontStyle.Bold);
Brush b = new System.Drawing.SolidBrush(Color.White);
//g.FillRectangle(new System.Drawing.SolidBrush(Color.Blue),0,0,image.Width, image.Height);
g.Clear(Color.Blue);
g.DrawString(checkCode, f, b, 3, 3);

Pen blackPen = new Pen(Color.Black, 0);
Random rand = new Random();
for (int i = 0; i < 4; i++)
{
int y = rand.Next(image.Height);
g.DrawLine(blackPen, 0, y, image.Width, y);
}

System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
Response.ClearContent();
Response.ContentType = "image/png";
Response.BinaryWrite(ms.ToArray());
g.Dispose();
image.Dispose();
}

} 

该文章转载自'大智の博客':http://www.csafe.cn/article.asp?id=1274 
</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ASP.NET中画图形验证码的实现代码
  • Asp.net开发之webform图片水印和图片验证码的实现方法
  • Asp.net开发之webform图片水印和图片验证码的实现方法
  • ASP.NET生成二维码的方法总结
  • ASP.NET生成图形验证码的方法详解
  • 详解ASP.NET验证码的生成方法
  • asp.net生成字母和数字混合图形验证码
  • asp.net简单生成验证码的方法
  • ASP.NET验证码实现(附源码)
  • asp.net中的窗体身份验证(最简单篇)

相关文章

  • 2018-08-20asp.net mvc中Forms身份验证身份验证流程
  • 2017-05-11ASP.NET FileUpload 上传图片实例
  • 2017-05-11Asp.net中使用文本框的值动态生成控件的方法
  • 2017-05-11asp.net 日期函数 某月的第一天和最后一天的日期
  • 2017-05-11asp.net利用cookie保存用户密码实现自动登录的方法
  • 2017-05-11asp.net Ajax 安装与卸载方法
  • 2017-05-11asp.net实现批量删除实例
  • 2017-05-11asp.net微信开发(开发者接入)
  • 2017-05-11asp.net 数据库的连接和datatable类
  • 2017-05-11linq 查询 Linq 高级查询实例代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • ASP.NET Core 2.0 带初始参数的中间件问题及解决方法
    • Asp.net开发之webform图片水印和图片验证码的实现方法
    • asp.net 特定目录form验证
    • 支持Ajax跨域访问ASP.NET Web Api 2(Cors)的示例教程
    • .Net Core项目如何添加日志功能详解
    • asp.ent下合并两个结构相同的DataTable
    • C# OWC生成图表
    • asp.net forms身份验证,避免重复造轮子
    • asp.net 实现防迅雷等下载工具盗链
    • .Net下二进制形式的文件(图片)的存储与读取详细解析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有