在很多网站中都会用到验证码的功能来防止非法注册用户,下面我就提供一个生成验证码的类。
代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
public partial class checkcode : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
CreateCheckCodeImage(GenerateCheckCode());
}
private string GenerateCheckCode()
{
int number;
char code;
string checkCode = String.Empty;
System.Random random = new Random();
for (int i = 0; i < 4; i++)
{
number = random.Next();
if (number % 2 == 0)
code = (char)('0' + (char)(number % 10));
else
code = (char)('A' + (char)(number % 26));
checkCode += code.ToString();
}
Response.Cookies.Add(new HttpCookie("CheckCode", checkCode));
return checkCode;
}
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 * 12.5)), 22);
Graphics g = Graphics.FromImage(image);
try
{
//生成随机生成器
Random random = new Random();
//清空图片背景色
g.Clear(Color.White);
//画图片的背景噪音线
for (int i = 0; i < 2; 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.Black), 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(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());
}
finally
{
g.Dispose();
image.Dispose();
}
}
}
分享到:
相关推荐
下载完直接就是一个C#的VerificationCodeHelper.cs类,类中已经写好自动生成验证码的代码功能,直接调用验证码的实体类就可以使用。
在C#中,这些功能可以封装成一个类,如`CaptchaGenerator`,包含`GenerateCaptcha`方法生成验证码图像和字符串,以及`ValidateCaptcha`方法进行验证。为了提高安全性,生成的验证码通常设置为一次性有效,即一旦被...
c#编写的生成图形验证码的类,支持算式验证码和字符验证码。使用时先实例化类,就可以直接调用Image属性获得验证码图形,Text属性是验证码的文本,如果使用的是算式验证码,可以调用类的getCodeValue方法获取验证码...
通过以上步骤,我们就成功地使用C#生成了一个图形验证码。这个过程可以根据需求进行调整,如增加更多干扰元素,支持不同的字符集,或者优化文本的可读性。生成的验证码图片可以结合服务器端存储的验证码文本进行验证...
1. **生成随机中文字符**:C#中的`System.Random`类可以用来生成随机数。我们需要一个包含常用中文字符的字符串数组,然后通过随机数选择字符。可以使用Unicode编码范围`[\u4e00-\u9fff]`来获取所有中文字符。 2. *...
### C#生成中文汉字验证码源码解析 #### 概述 验证码是一种常用的安全措施,用于区分用户是人类还是自动程序,以防止恶意攻击和滥用。本文将深入分析一个使用C#语言实现的生成中文汉字验证码的源代码示例。通过本...
通过学习和理解这些代码,你可以更深入地了解如何在实际项目中应用C#生成和验证动态验证码。 总的来说,生成动态验证码是提高Web应用安全性的重要手段。通过合理设计验证码的生成和验证逻辑,以及使用C#提供的强大...
asp.net(c#)生成验证码 点击可刷新
### C#中自动生成验证码的方法 #### 知识点概览 本文将详细介绍如何在C#应用程序中实现验证码的自动生成。主要知识点包括: - 验证码的概念及其作用 - 使用C#语言生成随机字符串的基本原理 - 实现自定义随机验证码...
C# 生成登陆验证码源码可以为数字也可为数字C# 生成登陆验证码源码可以为数字也可为数字
在C#编程中,生成验证码是一项常见的任务,主要用于...总之,C#生成验证码的过程涉及到随机数生成、图像处理和Web响应等多个技术点。通过理解并实践这些技术,开发者可以创建出符合安全性和用户体验要求的图形验证码。
3. **图片创建与绘制**:生成验证码还需要创建一个图像对象,例如使用`System.Drawing.Bitmap`类。然后,我们可以用`Graphics`类在图片上绘制随机字符。字符的字体、颜色、大小、倾斜角度等都可以随机化,以增加识别...
在生成验证码字符串后,我们将其保存到 Cookies 中,以便在后续验证中使用。 接下来,我们将详细介绍 `CreateCheckCodeImage` 方法。该方法用于生成验证码图片。首先,我们创建一个位图对象,然后使用随机数生成器...
这是一个验证码生成器,有以下功能(代码内部的注释很详细): ...注:下载文件中的验证码类是在VerificationCode.cs文件中,调用GetRandomBitmap获取图片调用IsInputRight判断是否你输入的文字符合
c# 生成验证码 c# 生成验证码 c# 生成验证码
在本项目中,我们关注的是C#语言实现的随机生成验证码的功能,包括生成验证码的页面和调用代码。下面我们将深入探讨验证码的基本原理、C#实现验证码的步骤以及如何在项目中集成和调用这些代码。 首先,验证码的基本...
一个验证码生成类,可生成数字、字母、汉字等任意组合的验证码,主要功能如下: 1、7种可选的验证码模式,可随意选择验证码的组合形式; 2、自定义验证码字体、字体颜色、字体样式、字体大小; 3、自定义验证码背景...
在本话题中,我们将探讨如何使用C#编程语言自动生成混合了字母(A~Z)和数字(0~9)的随机验证码。这个过程涉及到字符串操作、随机数生成以及图形处理,这些都是C#开发中的基础技能。 首先,我们需要导入必要的命名...
- 在`LoginTest`项目中,可能包含了用于生成验证码的C#类和对应的ASP.NET Web Forms或MVC视图,以及处理登录请求的控制器方法。 - 类似`GenerateCaptcha()`方法负责生成验证码图像和字符串,而`VerifyCaptcha()`...