您好,欢迎访问三七文档
常熟理工学院计算机科学与工程系《密码学基础》实验指导书网络工程系2009年7月《网络应用程序设计》实验指导书实验一、熟悉CAP4一、实验目的与要求通过实验,使学生对密码学有一定的感性认识;学会正确使用CAP(CryptographicAnalysisProgramv4)软件,验证课堂中所学的古典密码算法;为学习现代密码算法及其应用奠定基础。二、实验内容1、熟悉使用CAP4软件2、使用CAP4,验证课本中的一些加密算法,如凯撒密码、仿射密码等。三、实验指导CAP是由Dr.RichardSpillman专门为教学而研制的密码制作和分析的工具(CAPisageneralpurposetoolformakingandbreakingciphers.Itisintendedforeducationalpurposesonly.Dr.RichardSpillmanisnotresponsibleforanylostdataorerrorsinthesoftware.),已经在美国的很多高校得到了广泛地使用,受到了密码学习者的普遍欢迎。CAP4的软件界面如下:基本涵盖了经典密码学和现代密码学中的算法,主要包括:SimpleShift,ADFGVX,Affine,AutoKey,BazeriesCylinder,CellulerAutomata1d,CellulerAutomata2d,ColumnTrasposition,DES,DESStream,Elgamal,FourSquare,Hill,KeyWord,Knapsack,MultiLiteral,Nihilist,Permutation,Playfair,RC4,Rotor,RSA,Vigenere等等。-1-《网络应用程序设计》实验指导书下面以仿射密码为例,介绍CAP的使用。在CAP的主菜单中选取“Ciphers”ΓAffine”,出现如下图所示的弹出框。注意:菜单“Encipher”和“Decipher”是灰色的。输入a和b的值后,点击“CreateKey”设置仿射函数。此时菜单“Encipher”和“Decipher”变为黑色的(可以使用了)。此时可以“Plaintext”编辑框中输入明文,点击“Encipher”加密。-2-《网络应用程序设计》实验指导书Affine算法的联机帮助。点击上图中的“Help”,进入下图。选取“Presentation”,可以打开该算法所对应的课件,详细了解该算法的使用。-3-《网络应用程序设计》实验指导书实验二、Playfair密码算法一、实验目的与要求掌握古典密码算法的实现技术,加强编程能力的训练与程序的调试能力。实现Playfair密码算法。程序的运行结果与CAP进行对比分析。二、实验内容编程实现Playfair密码算法三、实验指导Playfair是一个手工的对称加密技术,而且也是第一个文献记载的多表代替密码技术。该密码算法是由CharlesWheatstone在1854年发明的,经LoadPlayfair推广而得名。该算法主要描述如下:Playfair密码是一种著名的双字母单表替代密码,实际上Playfair密码属于一种多字母替代密码,它将明文中的双字母作为一个单元对待,并将这些单元转换为密文字母组合。替代时基于一个5×5的字母矩阵。字母矩阵构造方法同密钥短语密码类似,即选用一个英文短语或单词串作为密钥,去掉其中重复的字母得到一个无重复字母的字符串,然后再将字母表中剩下的字母依次从左到右、从上往下填入矩阵中,字母i,j占同一个位置。例如,密钥K=playfairisadigramcipher,去除重复字母后,K=playfirsdgmche,可得字母矩阵:对每一对明文字母对(P1、P2)的加密方法如下:(1)若P1、P2在同一行,密文C1、C2分别是紧靠P1、P2右端的字母;(2)若P1、P2在同一列,密文C1、C2分别是紧靠P1、P2下方的字母;(3)若P1、P2不在同一行,也不在同一列,则C1、C2是由P1、P2确定的矩形其它两角的字母,且C1和P1在同一行,C2和P2在同一行;(4)若P1=P2,则两个字母间插入一个预先约定的字母,如q,并用前述方法处理;如balloon,则以balqloon来加密;(5)若明文字母数为奇数,则在明文尾填充约定字母。参考文献:1.《网络应用程序设计》实验指导书实验三、Vigenere密码算法一、实验目的与要求掌握古典密码算法的实现技术,加强编程能力的训练与程序的调试能力。实现Vigenere密码算法。程序的运行结果与CAP进行对比分析。二、实验内容编程实现Vigenere密码算法三、实验指导Vigenère密码是一个运用多个不同的凯撒(Caesar)密码算法的字母加密算法,凯撒密码的密钥依赖于用户给定的密钥(keyword)。Vigenere密码曾被多次发明出来,昀早出现在1553年GiovanBattistaBellaso的著作中,但是在19世纪被误认为是BlaiseVigenere所发明,而得现名。Vigenere是一种公认的易懂又易于实现、而且也是一种不易被攻击的密码技术,为它赢得了“不可攻破的密码”美誉。维吉尼亚密码是昀古老而且昀著名的多表替代密码体制之一,与位移密码体制相似,但维吉尼亚密码的密钥是动态周期变化的。该密码体制有一个参数n。在加解密时,同样把英文字母映射为0-25的数字再进行运算,并按n个字母一组进行变换。明文空间、密文空间及密钥空间都是长度为n的英文字母串的集合,因此可表示密变换定义如下:设密钥k=(k1,k2,…,kn),明文m=(m1,m2,…,mn),加密变换为:Ek(m)=(c1,c2,…,cn),其中ci(mi+ki)(mod26),i=1,2,…,n对密文c=(c1,c2,…,cn),解密变换为:Dk(c)=(m1,m2,…,mn),其中mi=(ci-ki)(mod26),i=1,2,…,n所对应的密钥表如下:参考文献:1.《网络应用程序设计》实验指导书实验四、Affine密码算法一、实验目的与要求掌握古典密码算法的实现技术,加强编程能力的训练与程序的调试能力。实现Affine密码算法。程序的运行结果与CAP进行对比分析。二、实验内容编程实现Affine密码算法三、实验指导仿射密码也是一般单表替代密码的一个特例,是一种线性变换。仿射密码的明文空间和密文空间与移位密码相同,但密钥空间为K={(k1,k2)|k1,k2∈Z26,gcd(k1,26)=1},因此K1的取值只能是1,3,5,7,9,11,15,17,19,21,23,25。对任意m∈M,c∈C,k=(k1,k2)∈K,定义加密变换为c=Ek(m)=k1m+k2(mod26)相应解密变换为:m=Dk(c)=k1-1(c-k2)(mod26)该算法的关键在于如何求K1的逆元K1-1,可采用下面算法:intinverse(inta,intMOD){//求a在MOD上的逆元,在该算法中MOD取26。inti=0;while(i*k%MOD!=1)i++;returni;}例如,用仿射函数26mod)85()(+=xxE对明文“AFFINECIPHER”进行加解密。密码表为:明文字母表ABCDEFGHIJKLMNOPQRSTUVWXYZ数字0001020304050607080910111213141516171819202122232425(5x+8)%260813182302071217220106111621000510152025040914192403密文映射表INSXCHMRWBGLQVAFKPUZEJOTYD加密过程为:PlaintextAFFINECIPHERx0558134281574175x+883333487328184883432893(5x+8)mod26877222121822517215CiphertextIHHWVCSWFRCP解密过程为:(5的乘法逆元为21,8的加法逆元为-8。)CiphertextIHHWVCSWFRCPY87722212182251721521(y-8)0-21-21294273-126210294-63189-12614721(y-8)mod26055813428157417-6-《网络应用程序设计》实验指导书PlaintextAFFINECIPHER参考文献:1.、《网络应用程序设计》实验指导书实验五、DES密码算法一、实验目的与要求掌握现代分组密码算法的实现技术,加强编程能力的训练与程序的调试能力。实现DES算法。程序的运行结果与CAP进行对比分析。二、实验内容编程实现DES算法三、实验指导1976年,DES(DataEncryptionStandard)是以正式的美国FIPS(FederalInformationProcessingStandard)而被NBS(NationalBureauofStandards)所采纳的,随后在国际上引起了广泛的兴趣。DES是一种使用56位密钥长度的对称密钥算法。DES在提出之初,就备受人们的质疑,主要在于:○1秘密的设计元素(classifieddesignelements);○2相对较短的密钥长度;○3怀疑为NSA(NationalSecurityAgency)留有后门。因此,DES激发了学术界对分组密码及其密码分析的强烈兴趣。DES是分组加密算法,以64位为分组对数据加密。同时DES也是一个对称算法:加密和解密用的是同一个算法。它的密匙长度是56位,密匙可以是任意的56位的数,而且可以任意时候改变。所以保密性依赖于密钥。DES对64位的明文分组M进行操作,M经过一个初始置换IP置换成m0,将m0明文分成左半部分和右半部分m0=(L0,R0),各32位长。然后进行16轮完全相同的运算,这些运算被称为函数f,在运算过程中数据与密匙结合。经过16轮后,左、右半部分合在一起经过一个末置换。在每一轮中,密匙位移位,然后再从密匙的56位中选出48位。通过一个扩展置换将数据的右半部分扩展成48位,并通过一个异或操作替代成新的32位数据,在将其置换换一次。这四步运算构成了函数f。然后,通过另一个异或运算,函数f的输出与左半部分结合,其结果成为新的右半部分,原来的右半部分成为新的左半部分。将该操作重复16次,就实现了。DES密码算法中的加密函数变换(F)-8-《网络应用程序设计》实验指导书Feistel结构密钥变换结构DES加密算法总体结构参考文献:1、.、《网络应用程序设计》实验指导书实验六、AES密码算法一、实验目的与要求掌握现代分组密码算法的实现技术,加强编程能力的训练与程序的调试能力。实现AES加密算法。程序的运行结果与CAP进行对比分析。二、实验内容编程实现AES算法三、实验指导经过长达5年的标准化过程,Rindeal被确定位15个候选算法的昀后获胜者,被美国政府确定为新的加密标准算法AES(AdvancedEncryptionStandard)。这个标准包括了3个源自于Rindeal算法的分组密码算法:AES-128,AES-192,AES-256。而美国政府却采用了加密分组长度位128
本文标题:密码学基础实验讲义
链接地址:https://www.777doc.com/doc-1766113 .html