自从上次有了一次破解验证码的经验后,就一直想自己写个像样点的验证码。今天无聊所以就写了,总体上来说还算很满意。就是有时复杂得肉眼都看不出是啥(这也跟图片太小有关系)。
这个验证码支持随机字体、字体大小、字体样式(普通、粗体、斜体)、字体颜色、自定义字符等。
代码中的libFont是字体库,libChar是字符库,libColor是颜色库,可以自己扩充。
两个while循环,第一个是画干扰线的,第二个是画字符的,线和字符的多和少可以自己控制。
最后是Session["SAFECODE"],自己也可以修改,默认是把所有字符都转成大写的。
其它的就没什么好说的了,看代码吧。
<%@ Page Language="C#" %>
<%@ import Namespace="System.IO" %>
<%@ import Namespace="System.Web" %>
<%@ import Namespace="System.Drawing" %>
<mce:script runat="server"><!--
// 样式库 格式: Name|Size(em)|Style
private static string[] libFont = new string[]
{
"宋体|12|Bold", "宋体|12|Italic", "宋体|12|Regular",
"Arial|12|Bold", "Arial|12|Italic", "Arial|12|Regular",
"Tahoma|12|Bold", "Tahoma|12|Italic", "Tahoma|12|Regular",
"Verdana|12|Bold", "Verdana|12|Italic", "Verdana|12|Regular"
};
// 字符库
private static string[] libChar = new string[]
{
"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",
"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",
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"
};
// 颜色库
private static string[] libColor = new string[]
{
"Blue", "Red", "Green", "DarkGreen", "DarkBlue", "Tomato"
};
private void Page_Load(object sender, System.EventArgs e)
{
GetSafeCode();
}
private void GetSafeCode()
{
Random r = null;
Bitmap bmp = null;
Graphics g = null;
MemoryStream stream = null;
string[]
这两天熟悉公司的网站前台和后台的数据结构和业务逻辑,看到许多工程下都有一个叫“Base”的文件夹,里面有一系列带“***.Generated.cs”的文件(比如Bulletin.Generated.cs)。懂点编程知识和英语的人都应该会想到这是用什么工具自动生成的吧?以前我也知道C#有根据模板自动 ......
对于一个想学好ASP及asp.net的过来人来说,学习的过程是有趣及折磨人的,当你做出第一个实验的时候你的心情是激动的,我是毕业以来一步一步的自学过程中总结了一些好的经验让看到这篇文章的人少走一些弯路,下面写的都是针对初学者,也是我自己是怎么从零基础到现在可以开发一些东西的过程.
&nb ......