当前位置:  编程技术>.net/c#/asp.net

C# 完美验证码的实例代码

    来源: 互联网  发布时间:2014-08-30

    本文导语:  一、函数代码 CheckCode.ASpx   代码示例: //添加引用: using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; using System.Text; /// /// 创建验证码,返回验证码字符串 /// /// int CodeLe:验证码长度 /// int CodeType:0纯...

一、函数代码 CheckCode.ASpx
 

代码示例:

//添加引用:
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Text;

///
/// 创建验证码,返回验证码字符串
///
/// int CodeLe:验证码长度
/// int CodeType:0纯数字;1纯字母;2数字与字母混合;3纯汉字
///
///
private string CreateCheckCode(int CodeLen, int CodeType)
{
/**参数说明:CodeLen(验证码长度);CodeType(0纯数字,1纯字母,2,数字与字母混合,3,纯汉字)**/
if (CodeType > 3)
{
CodeType = 3;
}
string codestring = "";
//定义验证图片的长度与宽度
int Clen=30*CodeLen, Cheight=40;
//定义验证图片的背景颜色
Color CBcolor = Color .FromArgb(200,200,200);
string[] font = { "Bell MT", "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体","幼圆", "楷体_GB2312","仿宋_GB2312" };
Font Cfont = new Font("Arial", 20, FontStyle.Bold);
//产生随机验证码
switch (CodeType)
{
//纯数字
case 0:
Random random1 = new Random();
codestring = random1.Next((int)System.Math.Pow(10,CodeLen-1),(int) System.Math.Pow(10,CodeLen)-1).ToString();
break;
//纯数字
//纯字母
case 1:
string Vchar1 = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z,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[] VcArray1 = Vchar1.Split(',');
int vclen1 = VcArray1.Length;
int vcindex1;
Random random2 = new Random();
for (int i = 0; i < CodeLen; i++)
{
vcindex1 = random2.Next(vclen1);
codestring = codestring + VcArray1[vcindex1];
}
break;
case 2:
string Vchar2 = "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,W,X,Y,Z,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[] VcArray2 = Vchar2.Split(',');
int vclen2 = VcArray2.Length;
int vcindex2;
Random random3 = new Random();
for (int i = 0; i < CodeLen; i++)
{
vcindex2 = random3.Next(vclen2);
codestring = codestring + VcArray2[vcindex2];
}
break;
//纯字母
//纯汉字
case 3:
//定义一个字符串数组储存汉字编码的组成元素
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();
int strlength = CodeLen*2;
//定义一个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);

}
Encoding gb = Encoding.GetEncoding("gb2312");
//根据汉字编码的字节数组解码出中文汉字
for(int i=0;i


    
 
 

您可能感兴趣的文章:

  • C# 验证码一例(随机数字加字母)
  • C#代码验证sql语句是否正确(只验证不执行sql)的方法
  • 一段C#生成随机验证码的代码
  • C# HttpClient Cookie验证解决方法
  • C#实现的简单验证码识别实例
  • C#中判断、验证字符串是否为日期格式的实现代码
  • c# 验证本机excel版本的代码
  • C#身份证验证的代码一例
  • 验证本机的excel版本的C#代码
  • C#中验证sql语句是否正确(不执行语句)
  • c#使用正则表达式匹配字符串验证URL示例
  • C#身份证验证小例子
  • c# 正则表达式 验证数字的方法
  • c# 生成验证码的一个例子
  • 深入c#绘制验证码的详解
  • c# 验证数字和日期的方法与实现代码
  • as.net 图片验证码一例(c#)
  • c#实现的简单验证码
  • c# 绘制验证码图片的例子
  • 基于C#后台调用跨域MVC服务及带Cookie验证的实现
  • JQuery验证特殊字符实例
  • JavaScript正则表达式验证中文实例讲解
  • PHP实现变色验证码实例
  • jquery验证email邮箱格式实例分享
  • EXTJS自定义表单验证的实例代码
  • Jquery验证用户名与密码的实例代码
  • 关于C#.net winform程序验证moss的集成身份认证实例
  • yii实现创建验证码实例解析
  • Python生成验证码实例
  • jquery实现手机发送验证码的倒计时代码 iis7站长之家
  • PHP生成图片验证码、点击切换实例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • JSP单选按钮验证、下拉框验证、复选框验证实现代码
  • jquery表单验证框架提供的身份证验证方法(示例代码)
  • jQuery.ajax 用户登录验证的代码
  • 求 : RSA 签名 验证 以及加密解密 源代码 急用!!! 求救!!
  • php验证是否是md5编码的简单代码
  • jquery正则验证代码(电话号码、传真、网址)
  • 谁有TFTP源代码,而且要求有安全验证的功能
  • 在javascript中(如onclick事件中)可以插入用JSP编写的验证权限的代码吗?那该怎样插入呢?
  • ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
  • jquery 手机发送验证码倒计时实现代码
  • Jquery正则表达式验证电子邮件的代码示例
  • jquery实现手机发送验证码的倒计时代码
  • Jquery验证Email格式是否合法的代码举例
  • Jquery正则验证身份证号码与Email邮箱的代码
  • Js 小数验证函数代码(基于正则)
  • jQuery异步验证用户名是否存在示例代码
  • 一个简单的PHP验证码实现代码
  • JavaScript 使用正则表达式进行表单验证的示例代码
  • Jquery验证用户名和密码的代码举例
  • asp.net 验证码实现代码一例
  • Uploadify 'uploadify.php'存在多个输入验证漏洞
  • sqlserver服务器验证改为混合验证模式步骤
  • 广告系统中weak-and算法原理及编码验证
  • MVC2 jQuery的验证时,关于客户端验证绑定复选框问题。
  • MD5SUM 用来验证下载的redhat7.3iso文件数据完整性可不可以在windows98中进行验证!
  • 表单验证插件 Jquery表单验证插件
  • 我用了C写了MYSQL的登陆命令CONNECT()但它不验证就进入,该如何验证
  • MD5怎么验证?我下载了ISO文件具体怎么验证?急!
  • php验证码 php非预置图片生成验证码
  • java正则表达式表单验证类工具类(验证邮箱、手机号码、qq号码等)
  • php使用filter过滤器验证邮箱 ipv6地址 url验证




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3