您好,欢迎访问三七文档
一次性口令【实验目的】(1)了解口令机制在系统安全中的重要意义。(2)掌握动态生成一次性口令的程序设计方法。【实验要求】(1)编写一个一次性口令程序(2)运行该口令程序,屏幕上弹出一个仿Windows窗口,提示用户输入口令,并给出提示模式。(3)用户输入口令,按照一次性算法计算比较,符合,给出合法用户提示;否则给出非法用户提示。(4)再一次运行口令程序,如果输入与第一次同样的口令,系统应当拒绝,提示非法用户。每次提示和输入的口令都是不一样的。(5)写出设计说明(含公式、算法,随机数产生法,函数调用和参数传递方式)【实验设备与环境】(1)MSWindows系统平台(2)设计语言:C语言【实验原理】1、一次性口令设计口令攻击常常作为黑客目标攻击的开始,一旦黑客获取了目标机上的用户口令,就可以进入目标计算机,对目标机造成严重的安全威胁。一次性口令是增强口令安全的有效方法之一。其主要设计思想是:设计一种动态生成口令的算法,使生成的口令只能使用一次,当再次使用时,该口令无效。从而有效地避免了基于口令破解的口令攻击。2、算法设计可以通过以下两种方式设计算法(1)数学计算式选定一个数学计算式(函数),系统提供该函数的一个变量,用户计算并返回函数值,按照用户的响应判断其真实性。e.g.1:f(x)=x+1系统提示x,用户输入x+1(2)字符串组合式选定一个字符串组合式,系统提供特征字符串,用户根据组合方式返回字符串,系统按照用户的响应判断其真实性。e.g.2:f(a1a2a3a4a5a6)=a1a3a4a6系统提供特征串:Friend用户变换此字符串为:Fied输入后进行口令认证。【实验方法步骤】(1)选择一个一次性口令的算法(2)选择随机数产生器(3)给出口令输入(密码)提示(4)用户输入口令(密码)(5)给出用户确认提示信息(6)调试、运行、验证。这里我们采用输入的字符串是否与随机产生的口令相匹配,相匹配则提示合法输入,不匹配则提示非法输入。用C程序实现程序如下:#includestdio.h/*输入输出函数文件头名*/#includestdlib.h/*srand函数文件头名*/#includetime.h/*time函数文件头名*/main(){inti,j;/*定义i,j变量*/chara[6];/*定义字符数组a[]变量*/charb[6];/*定义字符数组b[]变量*/time_tt;/*定义随机时间t变量*/srand((unsigned)time(&t));/*srand函数为随机数发生器的初始化函数*/clrscr();/*清屏*/for(i=0;i6;i++)a[i]=rand()%32+48;/*生成立即数rand并对32求余再加上48;将最后结果赋给a[i]*/printf(thepassnumberis:\n);/*输出一次性口令*/for(i=0;i6;i++)printf(%c,a[i]);/*输出字符串a*/printf(\ninputyoupassword\n);/*输出你自己的口令号*/for(j=0;j6;j++)scanf(\n%c,&b[j]);/*输入字符串b*/if(a[0]==b[0]&&a[1]==b[1]&&a[2]==b[2]&&a[3]==b[3]&&a[4]==b[4]&&a[5]==b[5])/*字符串a和字符串b相等*/printf(youpasswordisright\n);elseprintf(youpasswordiswrong\n);}【实验结果】输出一次性口令6BHII0输入你自己的口令号6BHII0匹配成功输出口令正确输出一次性口令51E74N输入你自己的口令号51E7N4匹配不成功输出口令错误
本文标题:一次性口令.doc
链接地址:https://www.777doc.com/doc-5081758 .html