如何使用.net生成验证码
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"如何使用.net生成验证码",在日常操作中,相信很多人在如何使用.net生成验证码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用.net生成验
千家信息网最后更新 2026年11月02日如何使用.net生成验证码
这篇文章主要介绍"如何使用.net生成验证码",在日常操作中,相信很多人在如何使用.net生成验证码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用.net生成验证码"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
先给大家看看效果图:

页面代码:
验证码
后台代码:
////// 登录 /// /// protected void LoginSubmits(object sender, EventArgs e) { CheckLogin(); } #region 私有方法 #region public static Boolean IsNotNull(Object str) { return !IsNull(str); } public static Boolean IsNull(Object str) { return str == null; } public static void Show(System.Web.UI.Page page, string msg) { page.ClientScript.RegisterStartupScript(page.GetType(), "message", ""); } #endregion private void CheckLogin() { if (tbCheckCode.Text.Trim() == "") { Show(this, "验证码不能为空!"); return; } else { if (IsNotNull(Session["ValidateCheckCode"])) { if (tbCheckCode.Text.Trim() != Session["ValidateCheckCode"].ToString()) { Show(this, "验证码填写不正确!"); tbCheckCode.Text = ""; return; } } else { Show(this, "请刷新验证码!"); return; } } } #endregion }}
生成验证码:
using System;using System.Drawing;using System.Text;using System.Web;namespace Web.TEXT{ public partial class VerifyCode : System.Web.UI.Page { public Encoding GB = Encoding.GetEncoding("GB2312"); protected void Page_Load(object sender, EventArgs e) { VerifyCode v = new VerifyCode(); v.Length = this.length; v.FontSize = this.fontSize; v.Chaos = this.chaos; v.BackgroundColor = this.backgroundColor; v.ChaosColor = this.chaosColor; v.CodeSerial = this.codeSerial; v.Colors = this.colors; v.Fonts = this.fonts; v.Padding = this.padding; string code = v.CreateVerifyCode(); //取随机码 v.CreateImageOnPage(code, this.Context); // 输出图片 Response.Cookies.Add(new HttpCookie("CheckCode", code.ToUpper())); // 使用Cookies取验证码的值 System.Web.HttpContext.Current.Session["ValidateCheckCode"] = code; //return checkCode; } #region 验证码长度(默认4个验证码的长度) private int length = 4; public int Length { get { return length; } set { length = value; } } #endregion #region 验证码字体大小(为了显示扭曲效果,默认40像素,可以自行修改) private int fontSize = 12; public int FontSize { get { return fontSize; } set { fontSize = value; } } #endregion #region 边框补(默认1像素) private int padding = 1; public int Padding { get { return padding; } set { padding = value; } } #endregion #region 是否输出燥点(默认不输出) private bool chaos = true; public bool Chaos { get { return chaos; } set { chaos = value; } } #endregion #region 输出燥点的颜色(默认灰色) private Color chaosColor = Color.LightGray; public Color ChaosColor { get { return chaosColor; } set { chaosColor = value; } } #endregion #region 自定义背景色(默认白色) private Color backgroundColor = Color.White; public Color BackgroundColor { get { return backgroundColor; } set { backgroundColor = value; } } #endregion #region 自定义随机颜色数组 private Color[] colors = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple }; public Color[] Colors { get { return colors; } set { colors = value; } } #endregion #region 自定义字体数组 private string[] fonts = {"Arial", "Georgia"}; public string[] Fonts { get { return fonts; } set { fonts = value; } } #endregion #region 自定义随机码字符串序列(使用逗号分隔) private string codeSerial = "0,1,2,3,4,5,6,7,8,9"; // string codeSerial = "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,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 codeSerial = "殃,央,鸯,秧,杨,扬,佯,疡,羊,洋,阳,氧,仰,痒,养,样,漾,邀,腰,妖,瑶,摇,尧,遥,窑,谣,姚,咬,舀,药,要,耀,椰,噎,耶,爷,野,冶,也,页,掖,业,叶,曳,腋,夜,液,一,壹,医,揖,铱,依,伊,衣,颐,夷,遗,移,仪,胰,疑,沂,宜,姨,彝,椅,蚁,倚,已,乙,矣,以,艺,抑,易,邑,屹,亿,役,臆,逸,肄,疫,亦,裔,意,毅,忆,义,益,溢,诣,议,谊,译,异,翼,翌,绎,茵,荫,因,殷,音,阴,姻,吟,银,淫,寅,饮,尹,引,隐,印,英,樱,婴,鹰,应,缨,莹,萤,营,荧,蝇,迎,赢,盈,影,颖,硬,映,哟,拥,佣,臃,痈,庸,雍,踊,蛹,咏,泳,涌,永,恿,勇,用,幽,优,悠,忧,尤,由,邮,铀,犹,油,游,酉,有,友,右,佑,釉,诱,又,幼,迂,淤,于,盂,榆,虞,愚,舆,余,俞,逾,鱼,愉,渝,渔,隅,予,娱,雨,与,屿,禹,株,蛛,朱,猪,诸,诛,逐,竹,烛,煮,拄,瞩,嘱,主,著,柱,助,蛀,贮,铸,筑,住,注,祝,驻,抓,爪,拽,专,砖,转,撰,赚,篆,桩,庄,装,妆,撞,壮,状,椎,锥,追,赘,坠,缀,谆,准,捉,拙,卓,桌,琢,茁,酌,啄,着,灼,浊,兹,咨,资,姿,滋,淄,孜,紫,仔,籽,滓,子,自,渍,字,鬃,棕,踪,宗,综,总,纵,邹,走,奏,揍,租,足,卒,族,祖,诅,阻,组,钻,纂,嘴,醉,最,罪,尊,遵,昨,左,佐,柞,做,作,坐,座"; public string CodeSerial { get { return codeSerial; } set { codeSerial = value; } } #endregion //产生波形滤镜效果 #region 产生波形滤镜效果 private const double PI = 3.1415926535897932384626433832795; private const double PI2 = 6.283185307179586476925286766559; /**/ /// /// 正弦曲线Wave扭曲图片(Edit By 51aspx.com) /// /// 图片路径 /// 如果扭曲则选择为True /// 波形的幅度倍数,越大扭曲的程度越高,一般为3 /// 波形的起始相位,取值区间[0-2*PI) /// public System.Drawing.Bitmap TwistImage(Bitmap srcBmp, bool bXDir, double dMultValue, double dPhase) { System.Drawing.Bitmap destBmp = new Bitmap(srcBmp.Width, srcBmp.Height); // 将位图背景填充为白色 System.Drawing.Graphics graph = System.Drawing.Graphics.FromImage(destBmp); graph.FillRectangle(new SolidBrush(System.Drawing.Color.White), 0, 0, destBmp.Width, destBmp.Height); graph.Dispose(); double dBaseAxisLen = bXDir ? (double) destBmp.Height : (double) destBmp.Width; for (int i = 0; i < destBmp.Width; i++) { for (int j = 0; j < destBmp.Height; j++) { double dx = 0; dx = bXDir ? (PI2*(double) j)/dBaseAxisLen : (PI2*(double) i)/dBaseAxisLen; dx += dPhase; double dy = Math.Sin(dx); // 取得当前点的颜色 int nOldX = 0, nOldY = 0; nOldX = bXDir ? i + (int) (dy*dMultValue) : i; nOldY = bXDir ? j : j + (int) (dy*dMultValue); System.Drawing.Color color = srcBmp.GetPixel(i, j); if (nOldX >= 0 && nOldX < destBmp.Width && nOldY >= 0 && nOldY < destBmp.Height) { destBmp.SetPixel(nOldX, nOldY, color); } } } return destBmp; } #endregion #region 生成校验码图片 public Bitmap CreateImageCode(string code) { int fSize = FontSize; int fWidth = fSize + Padding; int imageWidth = (int) (code.Length*fWidth) + 4 + Padding*2; int imageHeight = fSize*2 + Padding; System.Drawing.Bitmap image = new System.Drawing.Bitmap(imageWidth, imageHeight); Graphics g = Graphics.FromImage(image); g.Clear(BackgroundColor); Random rand = new Random(); //给背景添加随机生成的燥点 if (this.Chaos) { Pen pen = new Pen(ChaosColor, 0); int c = Length*10; for (int i = 0; i < c; i++) { int x = rand.Next(image.Width); int y = rand.Next(image.Height); g.DrawRectangle(pen, x, y, 1, 1); } } int left = 0, top = 0, top1 = 1, top2 = 1; int n1 = (imageHeight - FontSize - Padding*2); int n2 = n1/4; top1 = n2; top2 = n2*2; Font f; Brush b; int cindex, findex; #region 随机字体和颜色的验证码字符 for (int i = 0; i < code.Length; i++) { cindex = rand.Next(Colors.Length - 1); findex = rand.Next(Fonts.Length - 1); f = new System.Drawing.Font(Fonts[findex], fSize, System.Drawing.FontStyle.Bold); b = new System.Drawing.SolidBrush(Colors[cindex]); if (i%2 == 1) { top = top2; } else { top = top1; } left = i*fWidth; g.DrawString(code.Substring(i, 1), f, b, left, top); } //画一个边框 边框颜色为Color.Gainsboro g.DrawRectangle(new Pen(Color.Gainsboro, 0), 0, 0, image.Width - 1, image.Height - 1); g.Dispose(); //产生波形 //image = TwistImage(image, true, 8, 4); return image; } #endregion //将创建好的图片输出到页面 public void CreateImageOnPage(string code, HttpContext context) { System.IO.MemoryStream ms = new System.IO.MemoryStream(); Bitmap image = this.CreateImageCode(code); image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); context.Response.ClearContent(); context.Response.ContentType = "image/Jpeg"; context.Response.BinaryWrite(ms.GetBuffer()); ms.Close(); ms = null; image.Dispose(); image = null; } #endregion #region 生成随机字符码 public string CreateVerifyCode(int codeLen) { if (codeLen == 0) { codeLen = Length; } string[] arr = CodeSerial.Split(','); string code = ""; int randValue = -1; Random rand = new Random(unchecked((int) DateTime.Now.Ticks)); for (int i = 0; i < codeLen; i++) { randValue = rand.Next(0, arr.Length - 1); code += arr[randValue]; } return code; } public string CreateVerifyCode() { return CreateVerifyCode(0); } #endregion }}到此,关于"如何使用.net生成验证码"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
验证
生成
图片
波形
输出
效果
颜色
学习
字体
背景
边框
代码
像素
字符
数组
方法
更多
白色
长度
随机码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技工作委员会副主任毛军
科技赋能下的互联网金融
科技企业和互联网企业
互联网金融公司科技
互联网科技公司怎么样
善班互联网科技有限公司
腾讯科技 互联网女皇
互联网科技公司有哪些
互联网科技视频素材
博兴的互联网电子科技公司
须眉科技是互联网公司吗
互联网科技教育视频
现代互联网科技股
港股科技和互联网
互联网科技与大数据专业
互联网媒体平台算高科技产业
南京一网一红互联网科技有限公司
吉林省码上互联网科技电话
青岛互联网科技园
网互联网络科技
咖啡
互联网为科技
互联网科技的发展
苏州大垚互联网科技
大白互联网科技
成都仁贤领冠互联网科技有限公司
中国互联网十大科技股排名
银川新华互联网科技学校是国营吗
互联网科技对化妆品行业
互联网科技大会大佬