收藏 分销(赏)

课程设计网站验证码的实现.doc

上传人:丰**** 文档编号:9764018 上传时间:2025-04-06 格式:DOC 页数:12 大小:328.30KB
下载 相关 举报
课程设计网站验证码的实现.doc_第1页
第1页 / 共12页
课程设计网站验证码的实现.doc_第2页
第2页 / 共12页
点击查看更多>>
资源描述
沈阳理工大学课程设计专用纸 成 绩 评 定 表 学生姓名 石霖 班级学号 1103050137 专 业 计算机科学与技术 课程设计题目 网站验证码的 设计与实现 评 语 组长签字: 成绩 日期 2013年1月4 日 课程设计任务书 学 院 信息科学与工程学院 专 业 计算机科学与技术 学生姓名 石霖 班级学号 1103050137 课程设计题目 网站验证码的设计与实现 实践教学要求与任务: 为了防止网站被非法登陆,网站一般通过验证码的方式,防止黑客用软件非法登陆。验证码一般采用干扰后的图像显示,人可以识别,但机器识别有困难。本案例用Visual C#.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.1 ASP.NET主页 ……………………………………………6 3.2登陆主页 …………………………………………………7 4 收获与体会 ………………………………………………………8 5 参考文献 ………………………………………………………8 6 附录 ………………………………………………………9 1 需求分析 网络对现实生活已经产生了非常大的影响,网络带来快捷和方便的同时也产生了许许多多的新问题,例如本案例讨论的安全登录问题。大家都知道网络登录时必须输入正确的验证码才能登录成功,这是因为机器很难识别验证码。本案例就是通过Visual C#.NET语言和实际的操作来研究这一问题。 2 概要设计 2.1 题目概述 防止网站被非法登陆,防止黑客用软件非法登陆,网站要设置验证码。验证码一 般采用干扰后的图像显示,人可以识别,但机器识别有困难。本案例用Visual C#.NET开发一个网站的验证码生成软件,并在网页上实现操作。 2.2 功能框图 网站验证码的设计与实现 输入验证码 验证成功与失败的显示 随机生成验证码 图2.2 总功能框图 2.3 算法流程图 2.3.1验证码随机数的生成与分配 开始 定义验证码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 (附录)代码附录 6.1 网站验证码的生成 <%@ WebHandler Language="C#" Class="ValidateImage" %> using System; using System.Web; using System.IO; using System.Drawing; public class ValidateImage : IHttpHandler, System.Web.SessionState.IRequiresSessionState { public void ProcessRequest (HttpContext context) { context.Response.Cache.SetCacheability(HttpCacheability.NoCache); string valid = ""; // 定义随机数字 //生成包含验证码的图片 MemoryStream ms = Create(out valid); // 存储在session中的验证码,用于验证 context.Session["validateImage"] = valid; //置空输出流 context.Response.ClearContent(); //输出流格式 context.Response.ContentType = "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,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 (temp != -1 && temp == t) { return RndNum(VcodeNum);//如果获得随机数重复,然后递归调用 } temp = t; //随机数中位数加一 VNum += VcArray[t]; } 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.Black, 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 < VNum.Length; i++) { int cindex = random.Next(6); int findex = random.Next(5); // 格式 Font f = new System.Drawing.Font(fonts[findex], 15, System.Drawing.FontStyle.Regular); Brush b = new System.Drawing.SolidBrush(c[cindex]); int ii = 4; if ((i + 1) % 2 == 0) // 控制不同验证码字符在垂直方向上的位置 { ii = 2; } g.DrawString(VNum.Substring(i, 1), f, b, 3 + (i * 12), ii); } ms = new MemoryStream(); Img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); g.Dispose(); Img.Dispose(); return ms; } } 6.2 验证码的验证 查看输入的验证码与电脑是否匹配 protected void Button1_Click(object sender, EventArgs e) { if (TextBox3.Text == Session["validateImage"].ToString()) { Response.Write("验证成功!" + TextBox3.Text); Response.Write("用户名为:" + TextBox1.Text); else { Response.Write("验证失败!" + TextBox3.Text + "--->" + Session["validateImage"]); } } 沈阳理工大学 12
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服