《密码学》课程设计教学大纲
课程编号:089233 设计周数:3 周 学分数:3 应开学期:5
一、课程设计的目的
通过本课程实验,使学生能运用应用密码学的基本概念、基本原理、协议和技术,阐释一般安全网络环境中密码产品如何利用密码学理论工作的原理,分析密码技术的实现过程和方法。
二、适用专业
信息安全专业、以及与信息安全相关的数学系信息专业、通信专业和计算机专业等。
三、课程设计的基本要求
要求实验者有较强的理论基础和动手编程能力。对于每一个实验都给出了实验目的﹑实验内容﹑预习要求(实验导读)﹑实验提示﹑实验作业。主张学生在做实验前,必须要充分预习,充分准备,要依靠自己在做实验之前要编出程序,经过实验调试改正程序,得出正确的结果。
四、课程设计的内容
密码实验共安排三个代表性的实验。在此基础之上,如果学生有余力可以研究具体的密码分析算法,如差分攻击,代数攻击等。进一步加深对密码算法的理解。
五、时间分配
六、成绩评定
实验单独考核,按预习、操作、纪律、实验报告综合评定成绩,按优、良、中、及格、不及格评定,教学结束后, 实验成绩不超过总成绩的30%。
七、说明
密码实验共安排三个代表性的实验。不论哪类实验,都不希望具体的实验步骤整齐划一和实验报告内容千篇一律。实验者应当尽可能发挥自己的潜能,写出有各自特色的实验报告。比如,要求有对程序的分析,要在描述一些基本功能的基础上,自行给出能够其余可行的思路。除此之外,还应自己探索更深入和优化的方法,探讨相关参数对性能的影响,据此加以总结列举在实验报告上。同时应该侧重写出自己在算法分析、设计思路、实现功能或程序代码等方面的特色,写出设计和实现过程中遭遇到的难点和解决办法,可以不拘泥于实验指导给出的参考性设计思路,尽可能在深度和广度上加以拓展。只有这种各具特色的实验报告,才将更有利于体现实验者在创新思维和动手能力上的差异。
制定者:李昕
审定者:林果园
批准者:周勇
#include <iostream>
#include <string>
using namespace std;
char z[28][3]={"计","算","机","学","院","网","络","工","程","信","息","安","全",",","我","们","热","爱","中","华","人","民","共","和","国","。","大","家"};
int key[12]={1,3,5,9,11,13,15,17,19,23,25,27};
int gcd(int n,int m)
{
int r,temp;
if(n<m)
{temp=n;
n=m;
m=temp;
}
while(m!=0)
{r=n%m;
n=m;
m=r;
}
return n;
}
int niyuan(int a)
{
int b;
for(b=1;b<28;b++)
if((a*b)%28==1)
{
return b;
}
return -1;
}
class fangshe
{
public:
int k[2],kx;
char c[200],m[200];
void setkey()
{
cout<<"请输入仿射密码密钥的两部分:";
loop: cin>>k[0]>>k[1];
kx=niyuan(k[0]);
if(kx==-1)
{
cout<<"此密钥违法!请重新输入:"; goto loop; } } void setkey(int a,int b) { k[0]=a;k[1]=b; kx=niyuan(k[0]); } int* getkey() { return k; } void encryption(char m[],char c[]) { int i=strlen(m),kk=i/2,j; int mm[100],cc[100]; ctoi(m,mm); for(j=1;j<=kk;j++) cc[j]=(k[0]*mm[j]+k[1])%28; itoc(cc,c,kk); } void decryption(char c[],char m[]) { int i=strlen(c),kk=i/2,jj; int mm[100],cc[100]; ctoi(c,cc); for(jj=1;jj<=kk;jj++) { int zan=cc[jj]-k[1]; if(zan<0) zan=zan+28; mm[jj]=(kx*zan)%28; } itoc(mm,m,kk); } void ctoi(char m[],int mm[]) { int mi=0,ii=1,j; for(mi=0,ii=1;m[mi]!='\0';mi=mi+2,ii++) {
for(j=0;j<=27;j++)
if(m[mi]==z[j][0]&&m[mi+1]==z[j][1])
{
mm[ii]=j;
break;
}
}
}
void itoc(int cc[],char c[],int kk)
{
int i,ci=0;
for(ci=0,i=1;i<=kk;i++,ci=ci+2)
{
c[ci]=z[cc[i]][0];c[ci+1]=z[cc[i]][1];c[ci+2]='\0';
}
c[ci]='\0';
}
};
int main()
{
fangshe yunlong;
cout<<"
******************************************************************"<<endl;
cout<<" *** 欢迎使用云龙仿射加密系统 ***"<<endl;
cout<<" *** @ @@@@@@ @ ***"<<endl;
cout<<"
******************************************************************"<<endl;
cout<<" ************************注:密钥一只能从以下几个数字里选
择:********"<<endl;
cout<<" **************************";
int mimi;
for(mimi=0;mimi<=10;mimi++)
cout<<key[mimi]<<" ";
cout<<key[11]<<"*********"<<endl;
cout<<" **空间: 计算机学院网络工程信息安全,我们热爱中华人民共和国。大
家**"<<endl;
cout<<"
******************************************************************"<<endl;
while(1)
{
int cmd;
yl:
cout<<"请选择操作:1.加密信息 2.解密信息 3.破解信息"<<endl; cin>>cmd; if(cmd<1||cmd>3) { cout<<"输入有误!!!"<<endl; goto yl; } switch(cmd) { case 1: yunlong.setkey(); cout<<"请输入明文信息:";cin>>yunlong.m; yunlong.encryption(yunlong.m,yunlong.c); cout<<"密文为:"<<yunlong.c<<endl; break; case 2: yunlong.setkey(); cout<<"请输入密文信息:";cin>>yunlong.c; yunlong.decryption(yunlong.c,yunlong.m); cout<<"明文为:"<<yunlong.m<<endl; break; case 3: int a,b; int yes=0; cout<<"请输入密文信息:";cin>>yunlong.c; for(a=0;a<=11;a++) { for(b=0;b<=27;b++) { yunlong.setkey(key[a],b); yunlong.decryption(yunlong.c,yunlong.m); cout<<"密钥为:"; cout.width(4); cout<<"k1="; cout.width(4);cout<<key[a]; cout<<"k2="; cout.width(4);cout<<b; cout<<"明文为:"<<yunlong.m<<endl; // cout<<"该明文正确吗? 1.yes 0.no"<<endl; // cout<<"确认:";cin>>yes; // if(yes) // break; } if(yes) break;
} } break; } } return 0;
沈阳工程学院课程设计设计题目院系信息学院班级信安本111学生姓名学号指导教师祝世东王素芬职称工程师副教授起止日期20xx年1月6日…
密码学课程设计报告班级:信安10-1班姓名:学号:指导老师:一、Hash算法的实现MD5算法1.1算法概述MD5算法是一种消息摘要…
密码学课程报告《RSA加密解密算法》专业:信息工程(信息安全)班级:1132102学号:****姓名:***时间:20××年1月1…
XX大学密码学课程设计姓名学号学院指导老师完成日期20xx0106一实验任务及要求任务使用IDEA算法实现加解密过程要求1输入至少…
计算机与信息工程学院《密码学课程设计》报告(20××/20学年第二学期)题目:Diffie-Hellman密钥交换协议系别:计算机…
课程设计课程名称密码学题目名称AES的实现与分析学生学院应用数学学院专业班级11信息安全1班学号学生姓名指导教师李锋20xx年12…
西安科技大学《现代密码学》课程设计报告题目:密码学计算器学院:计算机科学与技术学院班级:姓名:学号:日期:20XX.1.8一.课程…
沈阳工程学院课程设计设计题目院系信息学院班级信安本111学生姓名学号指导教师祝世东王素芬职称工程师副教授起止日期20xx年1月6日…
密码学课程设计班级成员姓名指导教师20xx7中国矿业大学计算机学院密码学课程设计目录密码学课程设计11实验一实现一个多表古典加密和…
密码学课程报告《RSA加密解密算法》专业:信息工程(信息安全)班级:1132102学号:****姓名:***时间:20××年1月1…