C#产生随机验证码的代码

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Text;

using System.Drawing.Drawing2D;

using System.Drawing;

using System.IO;

using System.Drawing.Imaging;

public partial class ValidateCode : System.Web.UI.Page

{

    private string code;

    private const int ImageHeigth = 22;             //验证码图片的高度

    private const double ImageLengthBase = 12.5;    //验证码图片中每个字符的宽度

    private const int ImageLineNumber = 25;         //噪音线的数量

    private const int ImagePointNumber = 100;       //噪点的数量

    private int length;

    public static string VALIDATECODEKEY;       //此处用来保存验证码到Session的Key的名称

    //静态构造函数初始化验证码在Session中的Key名称

    static ValidateCode()

    {

        VALIDATECODEKEY = "VALIDATECODEKEY";

    }

    //设置验证码的长度和内容

    public ValidateCode()

    {

        this.length = 4;

        this.code = string.Empty;

    }

    ///

    /// 产生随机的验证码并加入Session

    ///

    /// 验证码长度

    ///

    public string CreateCode(int length)

    {

        if (length <= 0)

        {

            return string.Empty;

        }

        Random random = new Random();

        StringBuilder builder = new StringBuilder();

        //产生随机的验证码并拼接起来

        for (int i = 0; i < length; i++)

        {

            builder.Append(random.Next(0, 10));

        }

        this.code = builder.ToString();

        this.Session[VALIDATECODEKEY] = this.code;

        return this.code;

    }

    ///

    /// 根据长度产生验证码

    /// 并将验证码画成图片

    ///

    /// 验证码长度

    public void CreateValidateImage(int length)

    {

        this.code = this.CreateCode(length);

        this.CreateValidateImage(this.code);

    }

    ///

    /// 根据产生的验证码生成图片

    ///

    /// 验证码

    public void CreateValidateImage(string code)

    {

        if (!string.IsNullOrEmpty(code))

        {

            this.Session[VALIDATECODEKEY] = code;

            //初始化位图Bitmap对象,指定图片对象的大小(宽,高)

            Bitmap image = new Bitmap((int)Math.Ceiling((double)(code.Length * ImageLengthBase)), ImageHeigth);

            //初始化一块画布

            Graphics graphics = Graphics.FromImage(image);

            Random random = new Random();

            try

            {

                int num5;

                graphics.Clear(Color.White);

                //绘制噪音线

                for (num5 = 0; num5 < ImageLineNumber; num5++)

                {

                    int num = random.Next(image.Width);

                    int num3 = random.Next(image.Height);

                    int num2 = random.Next(image.Width);

                    int num4 = random.Next(image.Height);

                    graphics.DrawLine(new Pen(Color.Silver), num, num3, num2, num4);

                }

                //验证码字体样式

                Font font = new Font("Tahoma", 12, FontStyle.Italic | FontStyle.Bold);

                LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);

                //绘制验证码到画布

                graphics.DrawString(code, font, brush, (float)2, (float)2);

                //绘制噪点

                for (num5 = 0; num5 < ImagePointNumber; num5++)

                {

                    int x = random.Next(image.Width);

                    int y = random.Next(image.Height);

                    image.SetPixel(x, y, Color.FromArgb(random.Next()));

                }

                graphics.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);

                MemoryStream stream = new MemoryStream();

                //保存图片

                image.Save(stream, ImageFormat.Gif);

                base.Response.ClearContent();

                base.Response.ContentType = "image/Gif";

                base.Response.BinaryWrite(stream.ToArray());

            }

            finally

            {

                graphics.Dispose();

                image.Dispose();

            }

        }

    }

    protected override void OnLoad(EventArgs e)

    {

        this.CreateValidateImage(this.length);

    }

    // Properties

    public string Code

    {

        get

        {

            return this.Code;

        }

    }

    public int Length

    {

        get

        {

            return this.length;

        }

        set

        {

            this.length = value;

        }

    }

}

再次申明非本人原创。可以到网上下载ASPNETAJAXWeb.ValidateCode.dll直接使用

时间: 2024-11-04 17:40:25

C#产生随机验证码的代码的相关文章

随机验证码生成代码 (转)

随机验证码生成代码 package com.zuidaima.core.util; import java.util.Random; public class RandomUtil { public static final String ALLCHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; public static final String LETTERCHAR = "abc

黑马day04 画一个汉字的随机验证码的图片

下面的程序详细介绍了如何画一个随机验证码发送到客户端即浏览器进行显示: 1.画随机验证码的代码: package cn.itheima.response; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import j

登录验证随机验证码的实现

今天我们来学习登录验证中,如何生成随机验证码?验证码使用基本都是找现成的组件来实现,用代码实现这个简单功能主要是了解了解验证码内部的实现. 友情链接 生成随机验证码基本流程:http://www.cnblogs.com/yuanchenqi/articles/7468816.html 一.效果图展示 二.代码实现 1.首先用bootstrap布一个上图简单的页面 <div class="container"> <div class="row">

【代码实现】PHP生成各种随机验证码

文章来源:PHP开发学习门户  (自行开发的个人网站) 验证码在WEB应用中非常重要,通常用来防止用户恶意提交表单,如恶意注册和登录.论坛恶意灌水等.本文将通过实例讲解使用PHP生成各种常见的验证码包括数字验证码.数字+字母验证码.中文验证码.算术验证码等等以及其Ajax验证过程. 下载示例源码 PHP生成验证码图片 PHP生成验证码的原理:使用PHP的GD库,生成一张带验证码的图片,并将验证码保存在Session中.PHP生成验证码的大致流程有: 1.产生一张png的图片: 2.为图片设置背景

Django之路 - 实现登录随机验证码

登录验证码是每个网站登录时的基本标配,网上也有很多相应的文章, 但是从生成验证码到 应用到自己的网站上的全步骤,并没有看到很多, 为了节约大家的时间,我把整体步骤写下来, 即拿即用哈 1. 生成随机验证码  随机验证码代码 2. 如何应用到你的django项目中 整个验证码的流程如下 用户访问登录页面,你的后台程序在给用户返回登录页面时,同时生成了验证码图片 用户输入账户信息和验证码数字,提交表单 后台判断用户输入的验证码和你生成的图片信息是否一致,如果一致,就代表验证码是没有问题的 问题就卡在

学习python:实例2.用PIL生成随机验证码

效果: 代码: # 生成随机验证码图片 import string from random import randint, sample from PIL import Image, ImageDraw, ImageFont, ImageFilter # Image 负责处理图片 # ImageDraw 画笔 # ImageFont 文字 # ImageFileter 滤镜 # 定义变量 img_size = (150,50)        # 定义画布大小 img_rgb = (255,255

iPhone:iOS界面,本地生成随机验证码

本文博客,模仿杰瑞教育的一篇博文,并在它的基础上,进行了些许更改.同时在重写的过程中,对自己忽略的地方,进行了重新认识,受益匪浅.文章来源:http://www.cnblogs.com/jerehedu/p/4527707.html 其实这个功能,并不是很实用,但是,对于我们梳理细小的知识点,还是很有必要的. 一,首先,我们需要自定义一个view,这样,我们将图形绘制在里面,init这个view的时候,就可以直接显示了,以后再遇到,就可以“拿来主义”了. codeView.h @property

生成随机验证码的方法

1.借助列表 import random def random_code(): random_list = [] for i in range(4): ra = random.randrange(4) if ra == i: random_list.append(chr(random.randrange(97,122))) else: random_list.append(str(random.randrange(0,9))) code = "".join(random_list) r

随机验证码生成(python实现)

需求:生成随机不重复验证码. 代码: #!/usr/bin/env python # encoding: utf-8 """ @author: 侠之大者kamil @file: 200number.py @time: 2016/4/13 23:33 """ import random,string def rand_str(num,length = 7): f = open("Activation_code2.txt",&qu