信息安全实验报告学号: 学生姓名: 班级: 实验三密码学实验一、古典密码算法实验一、实验目的通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础。二、编译环境运行 windows 或 linux 操作系统的 PC 机,具有 gcc ( linux )、 VC ( windows )等 C语言编译环境。三、实验原理古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象。 ,就是将明文中的字符用其它字符替代后形成密文。例如:明文字母 a、b、c、d ,用 D、E、F、G 做对应替换后形成密文。替代密码包括多种类型,如单表替代密码、多明码替代密码、多字母替代密码、多表替代密码等。下面我们介绍一种典型的单表替代密码,恺撒(caesar) 密码,又叫循环移位密码。它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第 k个字母替代。它的加密过程可以表示为下面的函数: E(m)=(m+k) mod n 其中: m 为明文字母在字母表中的位置数; n 为字母表中的字母个数; k 为密钥; E(m) 为密文字母在字母表中对应的位置数。例如,对于明文字母 H ,其在字母表中的位置数为 8,设 k=4 ,则按照上式计算出来的密文为 L: E(8) = (m+k) mod n= (8+4) mod 26= 12=L ,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。置换密码有时又称为换位密码。矩阵换位法是实现置换密码的一种常用方法。它将明文中的字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而形成密文。例如,明文为 attack begins at five ,密钥为 cipher ,将明文按照每行 6列的形式排在矩阵中,形成如下形式: attackbeginsatfive根据密钥 cipher 中各字母在字母表中出现的先后顺序,给定一个置换: 123456f=145326根据上面的置换, 将原有矩阵中的字母按照第 1列,第4列,第5列,第3列, 第2列,第 6列的顺序排列,则有下面形式: aacttkbingesaIvfte从而得到密文: vaiikse 其解密的过程是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵,从而恢复明文。四、实验内容和步骤 1、根据实验原理部分对替代密码算法的介绍,自己创建明文信息,并选择一个密钥 k,编写替代密码算法的实现程序,实现加密和解密操作。 2、根据实验原理部分对置换密码算法的介绍,自己创建明文信息,并选择一个密钥,编写置换密码算法的实现程序,实现加密和解密操作。五、总结与思考记录程序调试过程中出现的问题,分析其原因并找出解决方法。记录最终实现的程序执行结果。思考采取什么样的手段来防范类似对网络的攻击。六、实验结果替换密码的加密解密先是加密实现程序为: #include "" #include "" main() { int k,i=0; char a[100],b[100]={0};; printf(" please input your mi ng wen : \n"); gets(a); printf(" please input mi shi \n"); scanf("%d",&k); printf("\n"); do{ b[i]=(char)(a[i]+k); if(b[i]>122){ b[i]=(char)(b[i]-26); } i++; }while(a[i]!='\0'); puts(b); getch(); } 实验结果为: 再是解密: 实现程序为: #include "" #include "" main() { int k,i=0; char a[100],b[100]; printf("please input mi wen: \n"); gets(a); printf("please input mi shi: \n"); scanf("%d",&k); printf("\n"); do{ b[i]=(char)(a[i]-k); if(b[i]< 97 ){ b[i]=(char)(b[i]+26); 不知道三哪里的问题结果中的 Y输不出来} i++; }while(a[i]!='\0'); puts(b); getch(); }
实验报告_密码学 来自淘豆网m.daumloan.com转载请标明出处.