山东建筑大学实验报告学院:信电学院班级:电信121姓名:石美惠学号:20120814011课程:网络信息安全实验日期:2015年5月7日成绩:实验一古典密码算法【实验目的】理解代换密码学加密过程【网络环境】交换网络结构【实验工具】Matlab【实验原理】古典密码的加密方法一般是文字置换,使用手工或机械变换的方式实现。古典密码的代表密码体制主要有:单表代替密码、多表代替密码及转轮密码。【实验步骤】一.手动完成Kaiser密码(1)根据Kaiser密码的基本原理,写出当密钥k=3时,对应明文:datasecurityhasevolvedrapidly的密文:GDWDVHFXULWBKDVHYROYHGUDSLGOB。(2)进入Matlab,打开fangshe_cipher.m,并运行该程序,在明文输入区明文:datasecurityhasevolvedrapidly。输入密钥k1=1,k2=3,查看相应的密文,并与手动加密的密文进行比较。GDWDVHFXULWBKDVHYROYHGUDSLGOB请根据密钥验证密文与明文对应关系是否正确。二.Kaiser密码分析(1)进入Matlab,打开fangshe_cipher.m,并运行该程序,输入密钥k1=1,k2不为0,在明文输入区明文(要求明文有一定的意义以便让同组主机分析)。请设置密钥参数k1:1请设置密钥参数k2:2明文:gameover。山东建筑大学实验报告学院:信电学院班级:电信121姓名:石美惠学号:20120814011课程:网络信息安全实验日期:2015年5月7日成绩:(2)选择合适的密钥k2值完成Kaiser加密,将密文记录下来。密文:ICOGQXGT。(3)通知同组主机(不要告知密钥值k2)密文,让同组主机获取密文。同组主机对密文进行Kaiser解密。clc;clear;A='abcdefghijklmnopqrstuvwxyz';B='ABCDEFGHIJKLMNOPQRSTUVWXYZ';fprintf('==========仿射变换加密系统==========\n');k1=input('请设置密钥参数k1:');%k1应与26互素,k1=1时便是凯撒变换k2=input('请设置密钥参数k2:');C=input('请输入密文:');%输入小写字母,且要加上单引号d=length(C);D=zeros(1,d);Z='';fori=1:dforj=1:26ifA(j)==C(i)m=j-1;c=k1*m+26-k2;D(i)=rem(c,26);break;endendendfori=1:dn=D(i)+1;山东建筑大学实验报告学院:信电学院班级:电信121姓名:石美惠学号:20120814011课程:网络信息安全实验日期:2015年5月7日成绩:Z(i)=B(n);endfprintf('明文:');Z(4)同组主机调节密钥k2,从而进行密码分析(平均13次,最坏26次破解)。将破解后的密钥和明文与同组主机记录的密钥和明文比较。如果不同请调节k2继续破解。请将破解出的明文和密钥记录在这里:密钥k1=1,k2=2。明文GAMEOVER。三.单表代换密码(1)根据采样密码的基本原理,写出当密钥k1=7,k2=0时,手动完成明文为wherethereislifethereishope的密文:YXCPCDXCPCEWZEJCDXCPCEWXUBC。(2)进入Matlab,打开fangshe_cipher.m,运行该程序,在明文输入区明文:wherethereislifethereishope,输入密钥k1=7,k2=0,查看相应的密文,并与你手动加密的采样密文进行比较。请根据密钥验证密文与明文对应关系是否正确。YXCPCDXCPCEWZEJCDXCPCEWXUBC(3)进入Matlab,打开fangshe_cipher.m,并运行该程序,输入k1满足与26互素且不为0、1,输入密钥k2(不为0),此时实现仿射单表置换算法。请记录:k1=3,k2=2。明文:gameover。密文:UCMOSNOB。四.多表代换密码(1)进入Matlab,打开Vigenere_cipher.m,并运行该程序,输入密钥k,实现维吉尼亚多表代换算法。请记录k=h。山东建筑大学实验报告学院:信电学院班级:电信121姓名:石美惠学号:20120814011课程:网络信息安全实验日期:2015年5月7日成绩:明文:gameover。密文:nhtlvcly。(2)通知同组主机(不要告知密钥值k)密文,让同组主机获取密文。并对密文进行Vigenere解密。尝试多次调节密钥k,看能否破译密文。(3)告知密钥值k,进行Vigenere解密,记录解密得到的明文是否正确。【思考】Kaiser单表代换加密和维吉尼亚多表代换有什么不同?在两者的加密分析过程中,我们看到哪一种算法更安全?请从密钥空间角度进行理论分析。Kaiser单表代换加密时,明文每个字母都是一样的向后移动k(密钥)位得到密文,而维吉尼亚多表代换是以明文字母选择列,以密钥字母选择行,两者的交点就是加密生成的密文。维吉尼亚多表代换是从明文字母到密文字母的多个映射来隐藏字母出现的频率分布,明文字符和密文字符的关系是一对多的,在隐藏语言字母的频率上是有优势的,它使得攻击者不能用单字母频率统计来破解密文。后者更为安全。【结果分析】Kaiser单表代换加密时每个字符向后移动k2位,解密则向前移动k2位,为防止出现负值加上26(共26个字母)。所以加密程序c=k1*m+k2,解密程序c=k1*m+26-k2。实验中空格会代替字符所以不能加空格。