《课程设计网站验证码的实现(共12页).doc》由会员分享,可在线阅读,更多相关《课程设计网站验证码的实现(共12页).doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上 成 绩 评 定 表学生姓名石霖班级学号专 业计算机科学与技术课程设计题目网站验证码的设计与实现评语组长签字:成绩日期 2013年1月4 日课程设计任务书学 院信息科学与工程学院专 业计算机科学与技术学生姓名石霖班级学号课程设计题目网站验证码的设计与实现实践教学要求与任务:为了防止网站被非法登陆,网站一般通过验证码的方式,防止黑客用软件非法登陆。验证码一般采用干扰后的图像显示,人可以识别,但机器识别有困难。本案例用Visual C#.NET开发一个网站的验证码生成软件,并在网页上测试该软件的有效性。工作计划与进度安排:第18周星期一:设计任务分析和总体设计星期二:软件
2、算法和流程设计星期三、四、五:软件编码实现第19周周一:软件总体调试周二:软件运行分析周三:答辩、验收程序周四:答辩、验收程序周五:书写课程设计报告,提交指导教师: 2013年1月4 日专业负责人: 2013年1月4日学院教学副院长: 2013年1月4日 目 录1 需求分析 42 概要设计 4 2.1 题目概述 4 2.2 功能框图 4 2.3算法流程图 4 2.3.1验证码随机数的生成与分配5 2.3.2证码进行验证6 3 调试结果6 3.1 ASP.NET主页 6 3.2登陆主页 7 4 收获与体会 8 5 参考文献 8 6 附录 91 需求分析网络对现实生活已经产生了非常大的影响,网络带
3、来快捷和方便的同时也产生了许许多多的新问题,例如本案例讨论的安全登录问题。大家都知道网络登录时必须输入正确的验证码才能登录成功,这是因为机器很难识别验证码。本案例就是通过Visual C#.NET语言和实际的操作来研究这一问题。2 概要设计2.1 题目概述防止网站被非法登陆,防止黑客用软件非法登陆,网站要设置验证码。验证码一 般采用干扰后的图像显示,人可以识别,但机器识别有困难。本案例用Visual C#.NET开发一个网站的验证码生成软件,并在网页上实现操作。2.2 功能框图网站验证码的设计与实现输入验证码验证成功与失败的显示随机生成验证码 图2.2 总功能框图2.3 算法流程图2.3.1验
4、证码随机数的生成与分配开始定义验证码VcodeNum生成验证码i VcodeNum + 1否是验证码是否重复否是i+将验证码写入文件结束 图 2.3.1 验证码随机数的生成与分配2.3.2证码进行验证开始输入验证码输入数据与给定验证码是否相等验证失败!验证成功结束 图2.3.2 证码进行验证3 调试结果3.1 ASP.NET主页 图4.1 ASP.NET主页3.2登陆主页进入登陆主页面 4-2登陆主页添加用户名、密码、验证码,提交登陆,显示验证成功的信息。 图4-3登陆主页4收获与体会 一周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件
5、事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了宽容,也学会了理解课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础通过这次课程设计,本人在多方面都有所提高生独立工作能力,在这次设计过程中,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。在此感谢我们的老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;老师循循善诱的教导和不拘一格的
6、思路给予我无尽的启迪;同时感谢对我帮助过的同学们,谢谢你们对我的帮助和支持,让我感受到同学的友谊。 由于本人的设计能力有限,在设计过程中难免出现错误,恳请老师们多多指教5 参考文献网站验证码的设计与实现开发案例6 (附录)代码附录6.1 网站验证码的生成 using System;using System.Web;using System.IO;using System.Drawing;public class ValidateImage : IHttpHandler,System.Web.SessionState.IRequiresSessionStatepublic void Proces
7、sRequest (HttpContext context) context.Response.Cache.SetCacheability(HttpCacheability.NoCache);string valid = ; / 定义随机数字/生成包含验证码的图片MemoryStream ms = Create(out valid);/ 存储在session中的验证码,用于验证context.SessionvalidateImage = valid;/置空输出流 context.Response.ClearContent();/输出流格式context.Response.ContentType
8、 = image/png;/输出context.Response.BinaryWrite(ms.ToArray();context.Response.End(); public bool IsReusable get return false;/用来产生2位数的随机数分配的方法private string RndNum(int VcodeNum)string Vchar = 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
9、,Y,Z;/ 拆分到数组中string VcArray = Vchar.Split(new Char , );/ 收集随机数string VNum = ;/ 记录最后随机值,尽量避免同一随机数int temp = -1;Random rand = new Random();/ 通过一个简单的算法,以确保不同的随机编号for (int i = 1; i VcodeNum + 1; i+)if (temp != -1)rand = new Random(i * temp * unchecked(int)DateTime.Now.Ticks);int t = rand.Next(55);if (te
10、mp != -1 & temp = t)return RndNum(VcodeNum);/如果获得随机数重复,然后递归调用temp = t;/随机数中位数加一VNum += VcArrayt;return VNum;/ 生成随机数,并将其写入图像文件public MemoryStream Create(out string VNum)VNum = RndNum(3);Bitmap Img = null;Graphics g = null;MemoryStream ms = null;System.Random random = new Random();Color c = Color.Blac
11、k, Color.Red, Color.DarkBlue, Color.Green,Color.Brown, Color.DarkCyan, Color.Purple;string fonts = Verdana, Microsoft Sans Serif, Comic Sans MS, Arial, 宋体 ;Img = new Bitmap(int)VNum.Length * 18, 32);g = Graphics.FromImage(Img);g.Clear(Color.White);/ 在背景的随机位置画图for (int i = 0; i 100; i+)int x = random.Next(Img.Width);int y = random.Next(Img.Height);g.DrawRectangle(new Pen(Color.LightGray, 0), x, y, 1, 1);/ 在g中映射验证码for (int i = 0; i + SessionvalidateImage); 专心-专注-专业