信息安全概论课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子科技大学电子工程学院
课程设计
(一次性口令设计)
课程名称:信息安全概论
任课老师:熊万安
专业:信息对抗技术
小组成员:
张基恒学号: 800 14
一、【实验目的】
(1)了解口令机制在系统安全中的重要意义。
(2)掌握动态生成一次性口令的程序设计方法。
二、【实验要求】
(1)编写一个一次性口令程序
(2)运行该口令程序,屏幕上弹出一个仿Windows窗口,提示用户输入口令,
并给出提示模式。
(3)用户输入口令,按照一次性算法计算比较,符合,给出合法用户提示;否
则给出非法用户提示。
(4)再一次运行口令程序,如果输入与第一次同样的口令,系统应当拒绝,提
示非法用户。每次提示和输入的口令都是不一样的。
(5)写出设计说明(含公式、算法,随机数产生法,函数调用和参数传递方式)。
三、【实验设备与环境】
(1)MSWindows系统平台
(2)设计语言:C语言
四、【实验方法步骤】
(1)选择一个一次性口令的算法
(2)选择随机数产生器
(3)给出口令输入(密码)提示
(4)用户输入口令(密码)
(5)给出用户确认提示信息
(6)调试、运行、验证。
五、【程序流程和功能】
密码系统设计为两个部分:一个服务器上的密码系统和一个用户手持的密码器。
程序使用两重认证,分别在于认证密码系统用户的真伪和认证密码生成器的真
伪。
使用方法为:a )用户分别登陆服务器和密码器,这分别需要两个用户自己掌握
的密码。b )登陆服务器后,服务器自动生成一个 9位数随机码。 c) 用户将随机码输入手持的密码器,由密码器生成一次性密码;同时,服务器用相同的算法
生成该一次性密码。 d) 用户在服务器上输入一次性密码,如果密码吻合,则可
以进入功能性页面操作。
系统的优点在于:a )将两种密码按网络和物理分开,两者由相同的一次性密码
算法相关,但是密码器本身没有能力生成关键的 9位随机码。b )用户只能通过
密码器获得最终的一次性密码,而密码器本身和密码器的密码由用户自己掌握,
从物理上隔绝了密码攻击的风险。
由于能力问题和演示方便,我将系统简化,并且把两个密码部分放在一个程序
里模拟。
设计流程为:
程序流程为:
六、【实验结果截图】
1 、用户登录
2 、密码验证
3 、生成 9 9 位随机码
4 、随机码输入验证
5 、生成一次性密码
七、【心得体会】
通过本次课程设计,我对密码算法特别是一次性密码有了更深的理解,对密码安全的实现有了新的体会。通过结合课上知识和生活实际设计密码系统并用 C C 程序实现,我对这么课的理解有了进一步加深。同时通过课程设计加强了我运用用C 语言编写程序解决实际问题的思维能力。
由于个人能力问题,我设计的系统不能真正实现,我编写的程序和密码算法也相对简单,密码的保密性还不够。但相信随着能力提高,我最终可以实现这一设计。
附源程序:
#include<>
#include<>
#include<>
#include <>
#include <>
void INI()
{
inta;
intp=920323;
printf("USERNAM:LNJLNJ\n");
printf("PASSWORD:");
scanf("%d",&a);
if (a==p)
{
printf("验证正确\n");
printf("\n");
}
else
{
printf("输入错误,还有两次机会\n"); printf("PASSWORD:");
scanf("%d",&a);
if(a==p)
{
printf("验证正确\n");
printf("\n");
}
else
{
printf("输入错误,还有一次机会\n"); printf("PASSWORD: ");
scanf("%d",&a);
if(a==p)
{
printf("验证正确\n");
printf("\n");
}
else
{
printf("输入错误");
exit(0);
}
}
}
return 0;
}
randam1(unsigned int r )
{
srand((unsigned)time(NULL));
r = rand()%0+0;
printf("随机码为:%d\n",r); printf("\n");
returnr;
}
randam2(unsigned int q )
{
time_t nowtime;
struct tm*timeinfo;
time(&nowtime );
timeinfo = localtime(&nowtime ); inta, b,c,d,ra;
a=timeinfo->tm_sec;
b=timeinfo->tm_min;
c=timeinfo->tm_hour;