`

生成汉字验证码

阅读更多
C#代码:
using System.Text;
using System.Drawing;


public partial class Default3 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {


        CreateCheckCodeImage(GetString(4));
        
    }
    private object[] CreateString(int strlenght)
    { 
        string[] str=new string[16] {"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};
            Random ran=new Random ();
        object [] bytes=new object [strlenght ];
        for (int i=0;i<strlenght ;i++)
        {
        int ran1=ran.Next (11,14);
            string str1=str [ran1].Trim ();
            ran = new Random(ran1 * unchecked((int)DateTime.Now.Ticks) + i);
            int ran2;
            if (ran1 == 13)
            {
                ran2 = ran.Next(0, 7);

            }
            else
            {
                ran2 = ran.Next(0,16);
            }
            string str2 = str[ran2].Trim();
            ran = new Random(ran2 * unchecked((int)DateTime.Now.Ticks) + i);
            int ran3 = ran.Next(10,16);
            string str3 = str[ran3].Trim();
            ran = new Random(ran3 * unchecked((int)DateTime.Now.Ticks) + i);
            int ran4;
            if (ran3 == 10)
            {
                ran4 = ran.Next(1, 16);
            }
            else if (ran3 == 15)
            {
              ran4 = ran.Next(0, 15);
            }
            else
            { 
               ran4 = ran.Next(0, 16);
            }        
            string str4 = str[ran4].Trim();
            byte byte1 = Convert.ToByte(str1 + str2, 16);
            byte byte2 = Convert.ToByte(str3 + str4, 16);
            byte [] stradd=new byte []{byte1,byte2 };
            bytes.SetValue(stradd, i);

        }
        return bytes; 
    }
    private string GetString(int length)
    {
        Encoding gb = Encoding.GetEncoding("gb2312");
        object[] bytes = CreateString(length);
        string str1 = gb.GetString((byte[])Convert.ChangeType(bytes[0], typeof(byte[])));
        string str2 = gb.GetString((byte[])Convert.ChangeType(bytes[1], typeof(byte[])));
        string str3 = gb.GetString((byte[])Convert.ChangeType(bytes[2], typeof(byte[])));
        string str4 = gb.GetString((byte[])Convert.ChangeType(bytes[3], typeof(byte[])));
        string str = str1 + str2 + str3 + str4;

        Response.Cookies.Add(new HttpCookie ("CheckCode",str ));
        return str;
    }

    private void CreateCheckCodeImage(string checkCode)
    {
        if (checkCode == null || checkCode.Trim() == string.Empty)
            return;
        System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 21.5)), 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);
            }
            Font font = new System.Drawing.Font("Arial", 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, 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());
        }
        catch (Exception ms)
        {

            Response.Write(ms.Message);
        }
        finally
        {
            g.Dispose();
            image.Dispose();
        }
    }  


javascript代码:
<script type="text/javascript">   
       function change() {   
           var imgNode = document.getElementById("vimg");   
           imgNode.src = "Code.aspx?t=" + (new Date()).valueOf();  // 这里加个时间的参数是为了防止浏览器缓存的问题   
       }   
   </script>  


html代码:
<asp:Image ID="vimg" runat="server" Height ="18px" Width ="60px" src="Code.aspx" /><input type="button" value="换一张图片" onclick="change()" />  

分享到:
评论

相关推荐

    自动随机生成字库,生成中文验证码(内含3000张已生成验证码)

    自动随机生成字库,生成中文验证码(内含3000张已生成验证码)

    asp生成汉字验证码

    在ASP(Active Server Pages)环境下,生成汉字验证码可以增加安全性,因为汉字的复杂性使得自动化程序更难以识别。本文将深入探讨如何使用ASP来生成汉字验证码,并结合提供的文件名,推测可能的实现方式。 首先,...

    struts2生成中文验证码的Action

    3. **生成中文验证码**: 验证码生成通常涉及随机选择汉字并组合。你可以使用Java的`Random`类和预先准备的汉字字符数组来生成随机的中文字符串。确保生成的字符串长度适中,一般4到6个字符。 4. **图形化验证码**: ...

    ajax验证码 验证码ajax 生成中文验证码

    在标题和描述中提到的“ajax验证码”和“生成中文验证码”是验证码技术的两个关键点,我们将详细探讨这两个概念。 首先,Ajax(Asynchronous JavaScript and XML)是一种网页开发技术,它允许网页在不刷新整个页面...

    C#生成中文汉字验证码源码

    ### C#生成中文汉字验证码源码解析 #### 概述 验证码是一种常用的安全措施,用于区分用户是人类...尽管该方案具有一定的复杂度,但对于需要在Web应用程序中集成中文验证码功能的开发者来说,仍具有一定的参考价值。

    PHP生成汉字验证码

    首先,生成汉字验证码的关键在于拥有一个汉字库,可以从 Unicode 范围内的汉字中随机选取。Unicode 是一种字符编码标准,包含了大量汉字。PHP 可以通过 mbstring 扩展来处理多字节字符,如汉字。 创建汉字验证码的...

    python生成汉字验证码

    在Python编程领域,生成汉字验证码是一项常见的任务,特别是在网站安全、数据验证等方面有着广泛应用。汉字验证码的目的是防止自动化程序(如机器人)进行恶意操作,它要求用户输入显示的一串随机汉字,增加了系统的...

    C#中文验证码

    这些库已经实现了上述大部分功能,开发者只需要配置即可快速生成中文验证码。 总的来说,C#中文验证码的实现涉及了字符生成、图像处理和安全策略等多个方面。通过学习和实践,开发者可以创建出既美观又安全的中文...

    java随机动态生成汉字验证码图片的实例代码分享

    在这个实例中,我们关注的是使用Java来生成汉字验证码图片,这是一种有效的防止爬虫和自动化工具的方式。下面将详细介绍这个Java实现汉字验证码的实例。 首先,生成汉字验证码的核心思想是结合随机性和图像处理技术...

    jsp java 生成中文验证码

    在这个场景中,我们关注的是在JSP(Java Server Pages)和Java环境中生成中文验证码的技术。 首先,`jsp java 生成中文验证码`这个标题暗示我们要讨论如何在JSP应用中使用Java来创建包含中文字符的验证码。JSP是...

    asp 生成汉字验证码(3个汉字)

    在ASP中生成汉字验证码是一项常见的安全措施,目的是防止自动化程序(如机器人)进行恶意操作,如注册、登录等。验证码通常包含随机生成的文字或数字,用户需要正确输入才能继续操作。 在"asp 生成汉字验证码(3个...

    java随机动态生成汉字验证码图片

    在Java编程语言中,生成汉字验证码图片是一种常见的安全机制,用于防止自动化脚本或机器人进行恶意操作,如注册、登录等。验证码图片通常包含随机生成的汉字和/或字母数字组合,用户需要输入图片上显示的文字以证明...

    生成中文验证码,很好!!!

    在本主题中,我们关注的是生成中文验证码,这是一种特殊的验证码类型,它不仅包含常见的字母和数字,还包含了中文字符,增加了识别难度,从而提高了系统安全性。 生成中文验证码涉及以下几个关键技术点: 1. **...

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

    在C#编程中,生成汉字验证码涉及到的主要知识点包括汉字编码、随机数生成以及字符串操作。汉字验证码通常用于网站的身份验证,防止机器人或自动化程序进行恶意操作。以下是对这些知识点的详细解释: 1. **汉字编码*...

    jsp生成中文验证码

    jsp生成中文验证码 蛮好用的,方便实惠,大家来看看那。

    PHP生成中文汉字图片验证码

    PHP生成中文汉字图片验证码,不知道对大家有没有帮助。

    ASP.NET 生成中文验证码实例

    中文验证码则是在验证码的基础上,增加了中文字符,以增加破解的难度,因为中文字符的数量远大于英文,增加了机器识别的复杂性。 创建一个ASP.NET中文验证码实例,主要涉及以下几个关键知识点: 1. **随机生成中文...

Global site tag (gtag.js) - Google Analytics