验证码技术是网站开发过程中比较重要的技术,可以防止非法人员利用注册机或者登陆工具来攻击我们的网站。下面是效果图:

具体实现方法如下:

1、主要思路是:引用Using System.Drawing命名空间,利用Graphics的FromImage方法创建一个画布,同时设置画布的宽和高,然后通过Graphics类 的DrawString方法随机生成的字符串绘制到画布中,绘制验证码的同时,在画布中利用SetPixel方法绘制一些色点,从而防止非法人员利用机器 人来进行登陆。当我们绘制验证码完毕后,在需要验证码的页面中利用Image空间将其显示出来,Image控件显示验证码的HTML源码设置如下:

<asp:Image ID="Image1" runat="server"ImageUrl="~/ValidateNum.aspx" />
<asp:LinkButton ID="LinkButton1" runat="server" style="font-size: small; ">看不清,换一张</asp:LinkButton>

2、这里所用到的ValidateNum.aspx页面代码如下:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Drawing;public partial class ValidateNum : System.Web.UI.Page
{protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){string validateNum = CreateRandomNum(4);//成生4位随机字符串CreateImage(validateNum);//将生成的随机字符串绘成图片Session["ValidateNum"] = validateNum;//保存验证码
        }}//生成随机字符串private string CreateRandomNum(int NumCount){string allChar = "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";string[] allCharArray = allChar.Split(',');//拆分成数组string randomNum = "";int temp = -1;//记录上次随机数的数值,尽量避免产生几个相同的随机数
Random rand = new Random();for (int i = 0; i < NumCount; i++){if (temp != -1){rand = new Random(i * temp * ((int)DateTime.Now.Ticks));}int t = rand.Next(35);if (temp == t){return CreateRandomNum(NumCount);}temp = t;randomNum += allCharArray[t];}return randomNum;}//生成图片private void CreateImage(string validateNum){if (validateNum == null || validateNum.Trim() == String.Empty)return;//生成Bitmap图像System.Drawing.Bitmap image = new System.Drawing.Bitmap(validateNum.Length * 12 + 10, 22);Graphics g = Graphics.FromImage(image);try{//生成随机生成器 Random random = new Random();//清空图片背景色
            g.Clear(Color.White);//画图片的背景噪音线 for (int i = 0; i < 25; i++){int x1 = random.Next(image.Width);int x2 = random.Next(image.Width);int y1 = random.Next(image.Height);int y2 = random.Next(image.Height);g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);}Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);g.DrawString(validateNum, font, brush, 2, 2);//画图片的前景噪音点 for (int i = 0; i < 100; i++){int x = random.Next(image.Width);int y = random.Next(image.Height);image.SetPixel(x, y, Color.FromArgb(random.Next()));}//画图片的边框线 g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);System.IO.MemoryStream ms = new System.IO.MemoryStream();//将图像保存到指定的流
            image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);Response.ClearContent();Response.ContentType = "image/Gif";Response.BinaryWrite(ms.ToArray());}finally{g.Dispose();image.Dispose();}}
}

转载于:https://www.cnblogs.com/qijunjun/p/5199464.html

asp.net 生成图形验证码(字母和数字混合)相关推荐

  1. 【转】ASP.NET中“字母和数字混合的验证码”详解

    "字母跟数字混合的验证码技术": 验证码技术是网站开发过程中比较重要的技术,可以防止非法人员利用注册机或者登陆工具来攻击我们的网站.废话少说,切入正题.主要思路是:引用Using ...

  2. html5 cs js字母验证码,JavaScript生成图形验证码

    本文实例为大家分享了js生成图形验证码的具体代码,供大家参考,具体内容如下 getGVerify:function (id) { function GVerify(options) { //创建一个图 ...

  3. PHP生成图形验证码

    PHP生成图形验证码 效果:随机生成6位验证码,100个干扰的黑点,一条干扰线 代码:image.php(生成验证码)和check.php(验证验证码是否输入正确) 效果图详见代码下面的截图 imag ...

  4. java 验证码 算术_java生成图形验证码(算数运算图形验证码 + 随机字符图形验证码)...

    平凡也就两个字: 懒和惰; 成功也就两个字: 苦和勤; 优秀也就两个字: 你和我. 跟着我从0学习JAVA.spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美! 关注微信 ...

  5. java生成验证码工具类_Java生成图形验证码工具类

    生成验证码效果 validatecode.java 验证码生成类 package cn.dsna.util.images; import java.awt.color; import java.awt ...

  6. php怎样规定密码混合,PHP产生随机字串,可用来自动生成密码 默认长度6位 字母和数字混合...

    /** * 产生随机字串,可用来自动生成密码 默认长度6位 字母和数字混合 * @param string $len 长度 * @param string $type 字串类型 * 0 字母 1 数字 ...

  7. 使用Java生成图形验证码(后端)

    生成图形验证码工具类: VerificationCodeUtil package com.merce.woven.utils;import java.awt.*; import java.awt.im ...

  8. Random随机生成几位数字和UUID随机生成几位字母加数字组合

    Random随机生成几位数字和UUID随机生成几位字母加数字组合 public class TestRandom { public static void main(String[] args) { ...

  9. php mysql 随机字符串函数是_PHP 生成随机字符串的方法函数, 默认长度6位 字母和数字混合件...

    PHP 生成随机字符串的方法函数, 默认长度6位 字母和数字混合件/** * 生成随机字符串,可用来自动生成密码 默认长度6位 字母和数字混合 * @param string $len 长度 * @p ...

  10. JavaScript生成图形验证码

    getGVerify:function (id){function GVerify(options) { //创建一个图形验证码对象,接收options对象为参数this.options = { // ...

最新文章

  1. TIP/IP 端口号大全
  2. 程序员别只顾着敲代码了,看看吧
  3. python 科学计算设计_Python科学计算——Data Structures
  4. mac云显卡服务器_重磅!NVIDIA GeForce NOW登陆Mac:云显卡玩吃鸡逆天
  5. Apache Beam欲通过uber api获取大数据
  6. Tensorflow yolov3 Intel Realsense D435 多进程multiprocessing线程池pool识别时间测试
  7. 运行Python程序的2种方式
  8. 分布式数字签名令牌TokenProvider
  9. 用fiddler抓包小程序
  10. python123九宫格输入法_《啊哈C语言-2016最新修正版》.pdf
  11. CentOS7--Firewalld防火墙
  12. 小伙子开超市,抓住“人性贪婪”,二个步骤过后,生意瞬间火爆!
  13. jq 获取input的光标,定位光标的位置
  14. python创意turtle作品大白-Python turtle 画个大白
  15. 简单画图程序(windows程序设计)
  16. 一度智信:拼多多商家修改sku有什么影响?
  17. android格式化手机号正则,Android中手机号、车牌号正则表达式大全
  18. iTOP-RK3568开发板Ubuntu系统修改dns
  19. 西藏春运送服务 让旅客带着温暖出发
  20. ccs读取dat文件c语言程序,详解CCS中的.dat文件

热门文章

  1. 奔腾4 2.4CPU计算机硬件能升级吗,CPU怎么升级啊
  2. ecs云服务器搭建php,云服务器 ecs怎么配置php
  3. oss读取txt文件
  4. python金融股票市场数据分析神器TA-Lib学习使用
  5. 李宏毅 Gradient Descent总结
  6. 三星手机怎么看html5,高端手机什么样?看三星S20 FE 5G就知道了
  7. 树展示 移动端_企业快速搭建移动BI轻应用,怎么少得了这款BI工具
  8. mysqld mysql-debug_mysqld --debug-sync
  9. matlab图像分割基于小波变换,图小波变换在图像分割中的应用研究
  10. Ajax技术复习---狂神笔记