ASP.NET with C#生成验证码的过程
ASP.NET with C#生成验证码的过程
生成验证码的大概过程就是在后台取得一个随机的字符串,然后该随机字符串绘制成一幅图片,当然,图片可以加上噪声,防止基本上不会出现的N人分析图形数据获取和还原字符串。
具体生成验证码的代码如下,在生成随机字符串的同时会将字符串设置到一个Session["ValidateCode"] 中,实用的时候只要得到用户返回值和Session值比较就可以得出填入的验证码是否一致了。
2using System.IO;
3using System.Web.UI;
4using System.Drawing;
5using System.Drawing.Imaging;
6using System.Drawing.Drawing2D;
7
8namespace Web.Common
9{
10 /**//// <summary>
11 /// validate 的摘要说明。
12 /// </summary>
13 public class Validate: System.Web.UI.Page
14 {
15 private void Page_Load(object sender, EventArgs e)
16 {
17 string strValidateCode = ValidateCode(6);//取得随机字符串,并设置Session值
18 DrawValidateCode(strValidateCode,50,100);//绘图
19 }
20
21 //绘图
22 private void DrawValidateCode(string strValidateCode,int intFgNoise,int intBgNoise)
23 {
24 if(strValidateCode == null || strValidateCode.Trim() == String.Empty)
25 {
26 return;
27 }
28 else
29 {
30 //建立一个位图文件 确立长宽
31 Bitmap bmpImage = new Bitmap((int)Math.Ceiling((strValidateCode.Length * 12.5)), 22);
32 Graphics grpGraphics = Graphics.FromImage(bmpImage);
33
34 try
35 {
36 //生成随机生成器
37 Random rndRandom = new Random();
38
39 //清空图片背景色
40 grpGraphics.Clear(Color.White);
41
42 //画图片的背景噪音线
43 for(int i=0; i<intBgNoise; i++)
44 {
45 int int_x1 = rndRandom.Next(bmpImage.Width);
46 int int_x2 = rndRandom.Next(bmpImage.Width);
47 int int_y1 = rndRandom.Next(bmpImage.Height);
48 int int_y2 = rndRandom.Next(bmpImage.Height);
49
50 grpGraphics.DrawLine(new Pen(Color.Silver), int_x1, int_y1, int_x2, int_y2);
51 }
52 //把产生的随机数以字体的形式写入画面
53 Font font = new Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic));
54 LinearGradientBrush brhBrush = new LinearGradientBrush(new Rectangle(0, 0, bmpImage.Width, bmpImage.Height), Color.Blue, Color.DarkRed, 1.2f, true);
55 grpGraphics.DrawString(strValidateCode, font, brhBrush, 2, 2);
56
57 //画图片的前景噪音点
58 for(int i=0; i<intFgNoise; i++)
59 {
60 int int_x = rndRandom.Next(bmpImage.Width);
61 int int_y = rndRandom.Next(bmpImage.Height);
62
63 bmpImage.SetPixel(int_x, int_y, Color.FromArgb(rndRandom.Next()));
64 }
65
66 //画图片的边框线
67 grpGraphics.DrawRectangle(new Pen(Color.Silver), 0, 0, bmpImage.Width - 1, bmpImage.Height - 1);
68
69 MemoryStream memsMemoryStream = new MemoryStream();
70 bmpImage.Save(memsMemoryStream, ImageFormat.Gif);
71 Response.ClearContent();
72 Response.ContentType = "image/Gif";
73 Response.BinaryWrite(memsMemoryStream.ToArray());
74 }
75 finally
76 {
77 grpGraphics.Dispose();
78 bmpImage.Dispose();
79 }
80 }
81 }
82
83 //取得随机字符串,并设置Session值
84 private string ValidateCode(int intLength)
85 {
86 int intNumber;
87 char chrCode;
88 string strValidateCode = String.Empty;
89
90 Random rndRandom = new Random();
91
92 for(int i=0;i<intLength;i++)
93 {
94 intNumber = rndRandom.Next();
95 if(intNumber % 2 == 0)
96 {
97 chrCode = (char)('0' + (char)(intNumber % 10));//如果随机数是偶数 取余
98 }
99 else
100 {
101 chrCode = (char)('A' + (char)(intNumber % 26));//如果随机数是奇数 选择从[A-Z]
102 }
103 strValidateCode += chrCode.ToString();
104 }
105
106 Session["ValidateCode"] = strValidateCode;//设置Session["ValidateCode"]
107 //Response.Cookies.Add(new HttpCookie("strValidateCode",strValidateCode));
108
109 return strValidateCode;
110 }
111
112 Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
113 override protected void OnInit(EventArgs e)
114 {
115 //
116 // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
117 //
118 InitializeComponent();
119 base.OnInit(e);
120 }
121
122 /**//// <summary>
123 /// 设计器支持所需的方法 - 不要使用代码编辑器修改
124 /// 此方法的内容。
125 /// </summary>
126 private void InitializeComponent()
127 {
128 this.Load += new System.EventHandler(this.Page_Load);
129
130 }
131 #endregion
132 }
133
134}
135
ASP.NET with C#生成验证码的过程相关推荐
- 如何在asp.net中动态生成验证码
现在越来越多的网站喜欢搞个验证码出来,而且各个语言基本上都能做到,今天我来一个C#写的! using System; using System.Collections; using System.Co ...
- 【转】asp.net mvc生成验证码
ASP.NET MVC实现网站验证码功能 网站添加验证码,主要为防止机器人程序批量注册,或对特定的注册用户用特定程序暴力破解方式,以进行不断的登录.灌水等危害网站的操作.验证码被广泛应用在注册.登录. ...
- ASP.NET Core 生成验证码
点击蓝字 关注我 使用验证码保护网站免受垃圾信息的选择有很多,比如Google ReCaptcha和captcha.com.这两者都可以整合到ASP.NET Core应用中去.然而,如果你出于某些原因 ...
- ASP.NET 实现登录界面(生成验证码)
这周末也没干啥,真正开始ASP,做了个学籍管理系统的登录界面,登录界面主要包括用户名.密码.验证码,界面字体用了<font size="5" color="blue ...
- ASP.net 生成验证码
一.说明 此文是小白在学习张晨光老师的视频教学<<Asp.Net WEB服务器编程技术>>中做的学习笔记,一些知识点也是跟着教程走的,大家也可以去老师的主页去学习,谢谢大家. ...
- [转]asp.net(c#)生成验证码 点击可刷新
先建一张生成验证码的网页CheckCode.aspx: CheckCode.aspx.cs代码如下 添加引用: using System.IO; using System.Drawing; using ...
- ASP.NET生成验证码
Code /************************************************************************/ /* 类名:无 * 功能:生成验证码图片 ...
- [asp.net]网站数据安全之验证码
数据安全是网站实现必不可少的其中一环,其中最基本的就有防止暴力破解这一类的机器人攻击. 机器人攻击,顾名思义,单纯地由程序算法计算出用户名对应的密码,达到破解账户的功能. 机器人攻击的原理如下: 网页 ...
- JSP+servlet生成验证码并验证
生成验证码的基本过程是: <%@ page language="java" import="java.util.*" pageEncoding=" ...
- C# 生成验证码 方法一
注意命名空间的引用 在项目中新建Validcode.aspx <%@ Page Language="C#" AutoEventWireup="true" ...
最新文章
- selenium + python自动化测试unittest框架学习(五)webdriver的二次封装
- xay loves count 枚举-复杂度-顺序无关-选择
- 大数据要学javaweb吗_大数据是私有财产吗?
- 决策树(十三)--XGBoost参数调优完全指南
- 【多模态】来自Facebook AI的多任务多模态的统一Transformer:向更通用的智能迈出了一步...
- 前端CSS - 相对定位,绝对定位,固定定位
- python读取dat文件并保存为Excel格式
- Python深度学习入门笔记(一):使用Pandas从CSV格式的文件读取数据
- 网站编辑与传统媒体编辑的区别及特点
- vue tab页面缓存处理
- 我的年终总结之一波三折的2018
- 什么是机器学习?机器学习与AI的关系?
- 品鑒「天籁般的印第安音乐,每次聆听都是一场心灵的洗礼」2019年 06月27星期四
- python基础学习笔记——完结
- 第四十讲项目三 鸡兔同笼
- 【.NET】简单使用Description特性
- 链接和二维码被微信拦截(被封锁、被屏蔽、被和谐)的最新解决方法——MaxJump
- 西安未来国际java,新开工!西安文化CBD国际商业中心来了!2020 级重点建设项目发布...
- 超详细 Zimbra 环境搭建安装
- R语言EG(Engle-Granger)两步法协整检验、RESET、格兰杰因果检验、VAR模型分析CPI和PPI时间序列关系...
热门文章
- Spring读书笔记(一)
- android可以root的版本,Android8.0以上系统ROOT时,Magisk框架替代SpuerSU
- php api 在线编辑导出,api在线管理,调试,文档生成工具之Apizza
- matlab 准线,在MATLAB中检测目标中心
- phpstom怎样导出数据库_详解mysql数据库sql优化技巧总结
- python列表操作详解_Python --列表(List)详解
- tcp网络示例客户端端以及代码,演示
- python教程原版_Python入门教程完整版(懂中文就能学会) pdf版+源码(讲义/笔记)
- python网络编程百度云_python网络编程.mobi
- 单网卡同时上内外网_Win10双网卡上网冲突(内网、外网)