`

收藏一段小的.net下的验证码片段

    博客分类:
  • .NET
阅读更多

收藏一段小的.net下的验证码片段,以供以后参考。

 protected void Page_Load(object sender, EventArgs e)
    {
         //先产生数字串
         string checkCode = this.CreateRandomCode(6);
        //用session保存
         Session["CheckCode"] = checkCode;
      //作图
        CreateImage(checkCode);
       
    }
    private void CreateImage(string checkCode)
    {
        System.Drawing.Bitmap image = new System.Drawing.Bitmap(Convert.ToInt32(Math.Ceiling((decimal)(checkCode.Length * 14))), 22);
        Graphics g = Graphics.FromImage(image);
       

        try
        {
          
            Random random = new Random();
            g.Clear(Color.AliceBlue);
           
            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("Comic Sans MS", 12, System.Drawing.FontStyle.Bold);
            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(checkCode, font, new SolidBrush(Color.Red), 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();
        }
    }

    public string CreateRandomCode(int codeCount)
    {
        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,V,W,X,Y,Z";
        string[] allCharArray = allChar.Split(',');
        string randomCode = "";
        int temp = -1;

        Random rand = new Random();
        for (int i = 0; i < codeCount; i++)
        {
            if (temp != -1)
            {
                rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
            }
            int t = rand.Next(36);
            if (temp != -1 && temp == t)
            {
                return CreateRandomCode(codeCount);
            }
            temp = t;
            randomCode += allCharArray[t];
        }
        return randomCode;
    }

分享到:
评论

相关推荐

    ASP.NET轻松实现验证码3种方法

    这种方法通常会生成一段包含随机字符串的语音文件。 #### 技术要点: 1. **文本转语音(TTS)技术**:使用TTS技术将随机字符串转换成语音。 2. **音频格式处理**:确保生成的音频文件能够被浏览器正确播放。 3. **...

    ASP.NET学习积累的代码段.

    这个压缩包中的"ASP.NET学习积累的代码段"显然包含了作者在学习和实践ASP.NET过程中积累的一些关键代码片段,涵盖了多个重要的知识点。让我们逐一探讨这些主题。 1. **验证码**:在Web开发中,验证码用于验证用户...

    ASP.NET验证码实现(附源码)

    ASP.NET验证码实现是一种常见的安全措施,用于防止自动化脚本或者恶意机器人进行非法操作,例如注册、登录等。在本文中,我们将深入探讨如何在ASP.NET环境中创建一个自定义的验证码生成器。 首先,验证码的核心功能...

    基于asp.net mvc的图片滑动验证码,极限验证.rar

    验证码的生成通常涉及到随机生成一段文本或图像,然后将其扭曲、加噪,以增加机器识别的难度。在ASP.NET MVC中,我们可以使用内置的`System.Drawing`库或者第三方库如ImageSharp来生成这样的图片。 接着,我们需要...

    asp.net验证源验

    代码片段还包含了数学常量π和2π的定义,虽然在给定的代码段中没有直接使用,但它们可能在后续的图像生成逻辑中用于计算图形元素的位置或角度,增加验证码图像的复杂性和随机性。 ### 实际应用与注意事项 在实际...

    验证码vb

    从给定的代码片段来看,这是一段使用Visual Basic(简称VB)编写的验证码生成程序。下面我们将详细解析这段代码中的关键知识点。 ### 1. 验证码生成原理 验证码,又称CAPTCHA,是一种用来区分人与机器的测试机制。...

    语音验证码所需要的包jcaptcha-1.0-all.jar

    在这种验证码系统中,用户需要听取一段随机生成的语音片段,通常是一串数字或字母,然后正确输入到指定的输入框中以完成验证。jcaptcha-1.0-all.jar 文件是实现这种语音验证码功能所需的一个Java库包。 JCAPTCHA,...

    asp.net常用代码1(C#)

    `&lt;%randomize%&gt; (int(rnd()*n)+1)%&gt;` 这段 C# 代码可以生成一个指定范围内的随机整数,常用于游戏、验证码或数据填充等场景。 7. 上滚文本: `&lt;marquee direction="up" ...&gt;` 创建了一个上滚动的文本效果,虽然现在...

    tessnet2_32及语言包和验证码使用方法

    **附一小段使用代码.txt** 文件可能包含了一个示例,展示了如何在 C# 项目中集成和使用 tessnet2_32。这种代码片段通常会展示如何加载库、初始化引擎、读取图像和获取识别结果。 **lang** 文件夹可能包含了不同语言...

    基于c#的验证码图片生成代码

    本文档主要介绍了一段基于C#语言实现的验证码图片生成代码。该代码能够生成包含随机字符的验证码图片,并将其显示在Web页面上。通过这种方式,可以有效地增强系统的安全性。 ## 二、关键技术点 ### 2.1 C#编程语言...

    Asp.net开发必备51种代码(非常实用).rar

    在Asp.NET开发中,掌握一系列实用的代码片段是至关重要的。这个压缩包"ASP.NET开发必备51种代码(非常实用).rar"提供了一系列针对初学者的基础代码示例,帮助开发者快速上手并理解ASP.NET的核心概念。下面将详细阐述...

    C#随机生成汉字验证码代码.docx

    6. **完整代码示例**:下面是一个生成4个随机汉字验证码的C#代码片段: ```csharp using System; using System.Text; class Program { static void Main() { Encoding gb = Encoding.GetEncoding("gb2312"); ...

    JS获取短信验证码倒计时的实现代码

    当用户看到倒计时在减少时,会知道系统正在处理请求,并在一段时间后可以再次尝试获取验证码。 实现短信验证码倒计时功能的完整代码如下: ```javascript $(function(){ var phone_num=/^1\d{10}$/; var flag = ...

    不能再简单的无闪刷新验证码原理很简单

    这种验证码设计的目标是让用户在不感觉到任何闪烁或页面重载的情况下获取新的验证码图像。标题和描述中提到的“不能再简单的无闪刷新验证码原理”,实际上是一种基于JavaScript的简单实现方式。 首先,我们来解析...

    c# 登陆代码

    从给定的C#代码片段来看,这是一段ASP.NET Web应用程序中的登录功能实现,主要涉及到用户界面元素的交互、数据库连接与查询、会话管理以及验证码验证等关键环节。下面将对这些知识点进行详细解析。 ### 数据库连接...

    登陆源代码

    - `Login`类:继承自`System.Web.UI.Page`,表示这是一个ASP.NET Web应用程序中的用户控件或页面。 2. **依赖库引用**: - `WebLibrary`、`Model`、`BAL`、`DBUtility`等库的引用,表明代码可能使用了自定义的...

    基于ASP的中国教程网爬虫程序炊少.zip

    ASP在1996年首次发布,是Web开发领域早期的重要技术之一,尽管现在已经被ASP.NET取代,但在一些老系统或特定场景下,ASP仍然有其应用价值。 【中国教程网】 中国教程网,作为一个在线教育资源平台,提供了丰富的...

    注册按钮倒计时方便实用

    - **基础结构**:给定代码采用ASP.NET Web Forms框架,这是一种用于构建动态Web应用程序的技术。 - **页面生命周期**:页面加载时,服务器控件(如`&lt;asp:Button&gt;`)被初始化,并且可以通过JavaScript进行交互。 ###...

    实现的不让同一个用户登陆

    本文将通过一个具体的ASP.NET示例来探讨如何实现这一功能。 #### 技术栈与背景介绍 本示例采用的是ASP.NET Web Forms技术,它是一种基于事件驱动模型的Web应用程序开发框架,广泛应用于企业级应用的构建。在本场景...

    vue中手机号,邮箱正则验证以及60s发送验证码的实例

    在本实例中,作者将分享如何在Vue项目中实现手机号和邮箱的正则表达式验证,以及如何在用户请求验证码后,设置60秒倒计时,在这段时间内禁止用户再次发送验证码。下面是详细介绍。 ## 1. 正则表达式验证手机号和...

Global site tag (gtag.js) - Google Analytics