课程设计心得网站验证码的实现模版.docx

上传人:b****7 文档编号:11013114 上传时间:2023-02-24 格式:DOCX 页数:12 大小:223.63KB
下载 相关 举报
课程设计心得网站验证码的实现模版.docx_第1页
第1页 / 共12页
课程设计心得网站验证码的实现模版.docx_第2页
第2页 / 共12页
课程设计心得网站验证码的实现模版.docx_第3页
第3页 / 共12页
课程设计心得网站验证码的实现模版.docx_第4页
第4页 / 共12页
课程设计心得网站验证码的实现模版.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

课程设计心得网站验证码的实现模版.docx

《课程设计心得网站验证码的实现模版.docx》由会员分享,可在线阅读,更多相关《课程设计心得网站验证码的实现模版.docx(12页珍藏版)》请在冰豆网上搜索。

课程设计心得网站验证码的实现模版.docx

课程设计心得网站验证码的实现模版

成绩评定表

学生姓名

石霖

班级学号

1103050137

专业

计算机科学与技术

课程设计题目

网站验证码的

设计与实现

 

 

组长签字:

成绩

 

日期

2013年1月4日

课程设计任务书

学院

信息科学与工程学院

专业

计算机科学与技术

学生姓名

石霖

班级学号

1103050137

课程设计题目

网站验证码的设计与实现

实践教学要求与任务:

为了防止网站被非法登陆,网站一般通过验证码的方式,防止黑客用软件非法登陆。

验证码一般采用干扰后的图像显示,人可以识别,但机器识别有困难。

本案例用VisualC#.NET开发一个网站的验证码生成软件,并在网页上测试该软件的有效性。

工作计划与进度安排:

第18周

星期一:

设计任务分析和总体设计

星期二:

软件算法和流程设计

星期三、四、五:

软件编码实现

第19周

周一:

软件总体调试

周二:

软件运行分析

周三:

答辩、验收程序

周四:

答辩、验收程序

周五:

书写课程设计报告,提交

指导教师:

2013年1月4日

专业负责人:

2013年1月4日

学院教学副院长:

2013年1月4日

1需求分析………………………………………………………4

2概要设计………………………………………………………4

2.1题目概述…………………………………………………4

2.2功能框图…………………………………………………4

2.3算法流程图………………………………………………4

2.3.1验证码随机数的生成与分配…………………………5

2.3.2证码进行验证…………………………………………6

3调试结果………………………………………………………6

3.1ASP.NET主页……………………………………………6

3.2登陆主页…………………………………………………7

4收获与体会………………………………………………………8

5参考文献………………………………………………………8

6附录………………………………………………………9

 

1需求分析

网络对现实生活已经产生了非常大的影响,网络带来快捷和方便的同时也产生了许许多多的新问题,例如本案例讨论的安全登录问题。

大家都知道网络登录时必须输入正确的验证码才能登录成功,这是因为机器很难识别验证码。

本案例就是通过VisualC#.NET语言和实际的操作来研究这一问题。

2概要设计

2.1题目概述

防止网站被非法登陆,防止黑客用软件非法登陆,网站要设置验证码。

验证码一般采用干扰后的图像显示,人可以识别,但机器识别有困难。

本案例用VisualC#.NET开发一个网站的验证码生成软件,并在网页上实现操作。

2.2功能框图

网站验证码的设计与实现

随机生成验证码

输入验证码

验证成功与失败的显示

 

图2.2总功能框图

2.3算法流程图

2.3.1验证码随机数的生成与分配

 

定义验证码VcodeNum

将验证码写入文件

开始

验证码是否重复

结束

i++

i

生成验证码

 

图2.3.1验证码随机数的生成与分配

 

2.3.2证码进行验证

开始

输入验证码

输入数据与给定验证码是否相等

验证成功

验证失败!

结束

 

 

图2.3.2证码进行验证

 

3调试结果

3.1ASP.NET主页

图4.1ASP.NET主页

3.2登陆主页

进入登陆主页面

4-2登陆主页

添加用户名、密码、验证码,提交登陆,显示验证成功的信息。

图4-3登陆主页

4收获与体会

一周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。

在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。

学会了合作,学会了宽容,也学会了理解

课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.

通过这次课程设计,本人在多方面都有所提高生独立工作能力,在这次设计过程中,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。

在此感谢我们的老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;同时感谢对我帮助过的同学们,谢谢你们对我的帮助和支持,让我感受到同学的友谊。

由于本人的设计能力有限,在设计过程中难免出现错误,恳请老师们多多指教

5参考文献

《网站验证码的设计与实现》开发案例

 

6(附录)代码附录

6.1网站验证码的生成

<%@WebHandlerLanguage="C#"Class="ValidateImage"%>

usingSystem;

usingSystem.Web;

usingSystem.IO;

usingSystem.Drawing;

publicclassValidateImage:

IHttpHandler,

System.Web.SessionState.IRequiresSessionState

{

publicvoidProcessRequest(HttpContextcontext){

context.Response.Cache.SetCacheability(HttpCacheability.NoCache);

stringvalid="";//定义随机数字

//生成包含验证码的图片

MemoryStreamms=Create(outvalid);

//存储在session中的验证码,用于验证

context.Session["validateImage"]=valid;

//置空输出流

context.Response.ClearContent();

//输出流格式

context.Response.ContentType="image/png";

//输出

context.Response.BinaryWrite(ms.ToArray());

context.Response.End();

}

publicboolIsReusable{

get{

returnfalse;

}

}

//用来产生2位数的随机数分配的方法

privatestringRndNum(intVcodeNum)

{

stringVchar="1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,m,n,p,q"+

",r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z";

//拆分到数组中

string[]VcArray=Vchar.Split(newChar[]{','});

//收集随机数

stringVNum="";

//记录最后随机值,尽量避免同一随机数

inttemp=-1;

Randomrand=newRandom();

//通过一个简单的算法,以确保不同的随机编号

for(inti=1;i

{

if(temp!

=-1)

{

rand=newRandom(i*temp*unchecked((int)DateTime.Now.Ticks));

}

intt=rand.Next(55);

if(temp!

=-1&&temp==t)

{

returnRndNum(VcodeNum);//如果获得随机数重复,然后递归调用

}

temp=t;

//随机数中位数加一

VNum+=VcArray[t];

}

returnVNum;

}

//生成随机数,并将其写入图像文件

publicMemoryStreamCreate(outstringVNum)

{

VNum=RndNum(3);

BitmapImg=null;

Graphicsg=null;

MemoryStreamms=null;

System.Randomrandom=newRandom();

Color[]c={Color.Black,Color.Red,Color.DarkBlue,Color.Green,

Color.Brown,Color.DarkCyan,Color.Purple};

string[]fonts={"Verdana","MicrosoftSansSerif","ComicSansMS","Arial","宋体"};

Img=newBitmap((int)VNum.Length*18,32);

g=Graphics.FromImage(Img);

g.Clear(Color.White);

//在背景的随机位置画图

for(inti=0;i<100;i++)

{

intx=random.Next(Img.Width);

inty=random.Next(Img.Height);

g.DrawRectangle(newPen(Color.LightGray,0),x,y,1,1);

}

//在g中映射验证码

for(inti=0;i

{

intcindex=random.Next(6);

intfindex=random.Next(5);

//格式

Fontf=newSystem.Drawing.Font(fonts[findex],15,System.Drawing.FontStyle.Regular);

Brushb=newSystem.Drawing.SolidBrush(c[cindex]);

intii=4;

if((i+1)%2==0)//控制不同验证码字符在垂直方向上的位置

{

ii=2;

}

g.DrawString(VNum.Substring(i,1),f,b,3+(i*12),ii);

}

ms=newMemoryStream();

Img.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);

g.Dispose();

Img.Dispose();

returnms;

}

}

6.2验证码的验证

查看输入的验证码与电脑是否匹配

protectedvoidButton1_Click(objectsender,EventArgse)

{

if(TextBox3.Text==Session["validateImage"].ToString())

{

Response.Write("验证成功!

"+TextBox3.Text);

Response.Write("用户名为:

"+TextBox1.Text);

else

{

Response.Write("验证失败!

"+TextBox3.Text+"--->"+Session["validateImage"]);

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 表格类模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1