niunan大哥的验证码生成语句:
1.HTML的代码:<!--
Document : ASP.NET用一般处理程序生成验证码
Created on : 2008-10-13 17:04
Author : 牛腩
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
function change() {
var imgNode = document.getElementById("vimg");
imgNode.src = "WaterMark.ashx?t=" + (new Date()).valueOf(); // 这里加个时间的参数是为了防止浏览器缓存的问题
}
</script>
</head>
<body>
<img src="WaterMark.ashx" id="vimg" alt="" /><input type="button" value="换一张图片" onclick="change()" />
</body>
</html>
2.一般处理程序WaterMark.ashx的代码:
<%@ WebHandler Language="C#" Class="WaterMark" %>
using System;
using System.Web;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Web.SessionState;
public class WaterMark : IHttpHandler, IRequiresSessionState // 要使用session必须实现该接口,记得要导入System.Web.SessionState命名空间
{
public void ProcessRequest(HttpContext context)
{
string checkCode = GenCode(5); // 产生5位随机字符
context.Session["Code"] = checkCode; //将字符串保存到Session中,以便需要时进行验证
System.Drawing.Bitmap image = new System.Drawing.Bitmap(70, 22);
Graphics g = Graphics.FromImage(image);
try
{
//生成随机生成器
Random random = new Random();
//清空图片背景色
g.Clear(Color.White);
// 画图片的背景噪音线
int i;
for (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.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);
//画图片的前景噪音点
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);
context.Response.ClearContent();
context.Response.ContentType = "image/Gif";
context.Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
}
}
/// <summary>
/// 产生随机字符串
/// </summary>
/// <param name="num">随机出几个字符</param>
/// <returns>随机出的字符串</returns>
private string GenCode(int num)
{
string str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//"的一是在不了有和人这中大为上个国我以要他时来用们生到作地于出就分对成会可主发年动同工也能下过子说产种面而方后多定行学法所民得经十三之进着等部度家电力里如水化高自二理起小物现实加量都两体制机当使点从业本去把性好应开它合还因由其些然前外天政四日那社义事平形相全表间样与关各重新线内数正心反你明看原又么利比或但质气第向道命此变条只没结解问意建月公无系军很情者最立代想已通并提直题党程展五果料象员革位入常文总次品式活设及管特件长求老头基资边流路级少图山统接知较将组见计别她手角期根论运农指几九区强放决西被干做必战先回则任取据处队南给色光门即保治北造百规热领七海口东导器压志世金增争济阶油思术极交受联什认六共权收证改清己美再采转更单风切打白教速花带安场身车例真务具万每目至达走积示议声报斗完类八离华名确才科张信马节话米整空元况今集温传土许步群广石记需段研界拉林律叫且究观越织装影算低持音众书布复容儿须际商非验连断深难近矿千周委素技备半办青省列习响约支般史感劳便团往酸历市克何除消构府称太准精值号率族维划选标写存候毛亲快效斯院查江型眼王按格养易置派层片始却专状育厂京识适属圆包火住调满县局照参红细引听该铁价严";
char[] chastr = str.ToCharArray();
// string[] source ={ "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 code = "";
Random rd = new Random();
int i;
for (i = 0; i < num; i++)
{
//code += source[rd.Next(0, source.Length)];
code += str.Substring(rd.Next(0, str.Length), 1);
}
return code;
}
public bool IsReusable
{
get
{
return false;
}
}
}
分享到:
相关推荐
同时,每次新的验证码生成时,应清除旧的session数据,避免重复使用。 在实际项目中,可以根据需求调整验证码的复杂度和生成逻辑,使其既能有效防止自动化攻击,又不会给正常用户带来过多困扰。通过这个案例,...
本话题主要关注如何使用Java生成包含随机加减法问题的图形验证码。这种验证码不仅增加了安全性,还为用户提供了验证他们是否为人类的互动方式。 首先,`IdentifyingCode.java`可能是一个类,它代表验证码对象,包含...
"jsp生成中文字符的验证码"是针对中文环境的一种特殊验证码实现,它旨在增加安全性,同时对于中文使用者来说更易识别。下面将详细介绍这个主题。 1. **JSP(JavaServer Pages)**: JSP是Java平台上的一个服务器端...
在本案例中,我们探讨的是一个使用Visual Basic (VB) 编程语言创建的简单验证码生成程序。这个程序可能并非特别复杂,但对于初学者来说,它是理解验证码生成原理的良好起点。 在VB中,验证码的生成通常涉及到以下几...
本压缩包“易语言源码生成验证码源码.rar”包含了一个使用易语言编写的验证码生成器的源代码,这对于初学者来说是一个很好的实践和学习资源,特别是对那些想了解或掌握验证码生成技术的人。 验证码,全称“验证字符...
7. **刷新功能**:由于验证码是一次性的,用户可能需要多次尝试才能正确输入,所以验证码生成器需要有刷新功能。在VB中,这可能通过按钮事件触发验证码的重新生成。 8. **用户界面**:VB提供了丰富的控件来构建用户...
在验证码的验证过程中,我们使用 Switch 语句来根据用户输入的验证码与生成的验证码进行比较,如果输入正确,则进行下一步操作。 在本例中,我们还使用了 Font 对象来设置验证码的字体和样式,以使验证码更加难以...
总结一下,本文的示例代码中定义的验证码生成类,通过面向对象的方法,封装了验证码生成的逻辑,并提供了简单的接口供外部使用。在实际应用中,你需要将这个类实例化,调用相应的方法来生成验证码,并将其输出到...
验证码生成 验证码的生成由`generate_random()`方法完成,该方法基于`allchars`和`singles`变量的值来确定字符集。如果`allchars`为真,则从ASCII码34到126(共93个字符)范围内随机选择字符;如果`singles`为真,...
`这样的语句,用来将生成的图片数据直接输出到HTTP响应流。 了解了这些基本原理后,开发者可以根据自己的需求对验证码的复杂度、样式进行定制,例如增加颜色变化、字体库选择、大小写混合等,以提高安全性。同时,...
从给定的文件信息来看,我们正在探讨的是一个基于Java的简单验证码生成程序。下面将对这个程序的关键知识点进行详细解析。 ### 验证码程序分析 #### 1. **生成随机字符串** 在代码中,`RandomStringUtils`类被...
在本压缩包中,包含的是易语言实现的验证码例程的源码,这对于学习易语言以及验证码生成技术的开发者来说是一个宝贵的资源。 验证码(CAPTCHA)是一种防止机器自动操作的技术,通常用于网络验证用户身份,避免恶意...
2. **验证码生成**:验证码可以由一系列随机字符(如数字和字母)组成,可以使用PHP的`rand()`或`mt_rand()`函数生成随机数,结合字母表生成随机字符串。为了增加安全性,通常还会将生成的验证码存储在服务器的会话...
在这个“易语言画板验证码源码.7z”压缩包中,我们很显然会找到一个用易语言编写的验证码生成系统的源代码。验证码(CAPTCHA)是一种防止机器人自动操作的安全机制,常用于网站注册、登录等环节,以验证用户是真人而...
学习ASP的朋友,一般都是申请一个免费的...在显示验证码的位置,用如下语句就可以了。;%= i %>" alt="验证码<%= i %>" name="yzm<%= i %>" id="yzm<%= i %>" />,其中,i是数字串的第几个位置。
下面将对这个系统的几个关键部分进行详细解析。...综上所述,这套数字验证码系统主要由三个部分组成:显示页面、验证码生成逻辑及验证逻辑。整个系统的设计简洁明了,能够有效地实现基本的验证码功能。
1. **验证码生成**:验证码的生成通常涉及随机算法,可以是数字、字母或者它们的组合。在Python中,可以使用random库生成随机数,然后转化为字符。对于图形验证码,可以使用 PIL(Python Imaging Library)或 OpenCV...
### C#验证码生成关键步骤解析 #### 1. 随机数生成(CreateRandomNum方法) 在验证码生成中,随机数生成是核心之一,用于创建不可预测的验证码内容。`CreateRandomNum`方法接收一个参数`NumCount`,表示生成的随机...
Hibernate3是对象关系映射(ORM)工具,它简化了数据库操作,将Java对象与数据库表进行映射,开发者可以使用面向对象的方式来操作数据库,而无需关心SQL语句。在SSH整合中,Hibernate负责数据的持久化,提供事务管理...
为了生成不同的验证码,开发者需要使用VB6.0的Randomize函数初始化随机数生成器,然后通过Rnd函数生成随机字符。这可能涉及到字符串操作,如从预定义的字符集中选取字符,组合成新的验证码。 【错误处理】 在练习...