西北师范大学计算机科学与工程学院学生实验报告- dl/ 2013 翊1十算机钱醐班级胃1(1)姓名金东海课程名称物联网信息安全实验课程类型 学时数实验名称古典密码实验实验内容:通过运算器工具实现移位密码、乘法密码、仿射密码、Playfair密码和维吉尼亚密码等算法 的加解密对各个算法的加解密进行扩展实验和算法跟踪实验原理:代换密码体制的一般定义为M=C=K=Z26,其中M为明文空间、C为密文空间、K为密钥空 间、Z26为26个整数(对应26个英文字母)组成的空间;要求26个字母与模26的剩余类集合 {0,1,2,…,25}建立 对应的关系一、 移位密码移位密码的加密实现上就是将26个英文字母向后循环移动k位,其加解密可分别表示为:c=Ek(m)=m+k(mod 26)m=Dk(c)=c-k(mod 26)其中,m、c、k是满足0Sm,c,k<25的整数二、 乘法密码乘法密码是通过对字母等间隔抽取以获得密文,其加解密可分别表示如下:c=mk(mod 26) m=ck-l(mod26)其中,m、c、k是满足(Xm,c,k彡25,且gcd(k,26)=l的整数三、 仿射密码仿射密码的加密是一个线性变换,将移位密码和乘法密码相结合,其加解密可分别表示为:c=Ea,h(m)=am+b(mod 26) m=Da5b(m)=al(c-b)(mod 26)其中:a、b是密钥,是满足0彡a,b彡25和gcd(a,26)=l的整数,即a和26互素;ad表示a 的逆元,即 a*a=l mod 26。
四、 Playfair密码学号:2013710601132016年 2 月 27 日Playfair是一个人工对称加密技术,由Charles Wheatstone在1854年发明,得名于其推广者 Lord PlayfairPlayfair密码是一种著名的双字母单表替代密码,实际上Playfair密码属于一种多 字母替代密码,它将明文中的双字母作为一个单元对待,并将这些单元转换为密文字母组合 Playfair密码基于一个5X5的字母矩阵,该矩阵通过使用一个英文短语或单词串即密钥来构造, 去掉密钥中重复的字母得到一个无重复字母的字符串,然后再将字母表中剩下的字母依次从左 到右、从上往下填入矩阵中例如,若密钥为“ playfair is a digram cipher ”,去除重复字母后,得到有效密钥 “playfirsdgmche”,可得字母矩阵如图1.1.1-1所示P1ayfirsdgmchebkn0qtuVwXz图 1.1.1-1注意:字母I,J占同一个位賈设明文字母对为(Pl, P2), Playfair密码的加密算法如下:(1) 若Pl、P2在同一行,密文Cl、C2分别是紧靠Pl、P2右端的字母,其中第一列被看作 是最后一列的右方(解密时反向);(2) 若Pl、P2在同一列,密文Cl、C2分别是紧靠Pl、P2下方的字母,其中第一行被看作 是最后一行的下方(解密时反向);(3) 若Pl、P2不在同一行,也不在同一列,则Cl、C2是由Pl、P2确定的矩形其它两角的 字母,且C1和P1在同一行,C2和P2在同一行(解密时处理方法相同);(4>若Pl =P2,则两个字母间插入一个预先约定的字母,如q,并用前述方法处理;如balloon, 则以ba lq lo on来加密;(5)若明文字母数为奇数,则在明文尾填充约定字母。
五、维吉尼亚密码Vigenenre密码是最著名的多表代换密码,是16世纪法国著名密码学家Blaise de Vigenenre 发明的Vigenenre密码使用一个词组作为密销,密销中侮一个字母用来确定一个代换表,甸一 个密钥字母被用来加密一个明文字母,第一个密钥字母加密第一个明文字母,第二个密钥字母 加密第二个明文字母,等所有密钥字母使用完后,密钥再次循环使用,于是加解密前需先将明 密文按照密钥长度进行分组密码算法可表示如下:设密钥 K=(ki,k2/--,kd),明文 14=(11^,m2,…,mn),密文 C=(cbc2,…,c„);加密变换为:Ci=Eki(mi)=mi+ki(mod 26)解密变换为:mi=Dki(Ci)=ci-ki(mod 26)通常通过查询维吉尼亚表进行加解密实验步骤:一、加解密计算(一) 、移位密码 1 .加密(1) 参照实验原理,在明文栏输入所要加密的明文,在密钥栏输入相应的密钥,如下图所示 移位密码明文:gbadbsbgdb 密钼:1 密文:加密~ 解密(2)点击“加密”按钮,在密文文本框内就会出现加密后的密文,如阁下阁所示移位密码hcbectchec明文:gbadb sbgdb 密钥:1 密文:解密|(1)在密文栏相应的文本框输入所要解密的密文,在密钥栏输入相应的密钥,如图下图所/J、O移位密码加密 解密(2) 点击“解密”按钮,在明文文本框闪就会出现解密后的明文,如图下图所示。
明文密钼密文乘法密码加密 解密(三)仿效密码、维吉尼亚密码仿射密码移位密码ci ceilrcfslcflc1dj dfjms dgtm dgmd加密1 l解至(二)、乘法密码加密 解密维吉尼密码明文:hlohkkj 密钼:jk 密文: qvxrtus解密加密二、拓展实验点击扩展实验下的按钮,进入相应算法的扩展实验面板,在按照界面信息操作即可,此处 为移位密码扩展实验的面板,如下图所示siaABCDEFGHIJKLMN0PQRSTVXYZ0001020304050607080910111213141516171819202122232425密钥密钼k I _注:密钼@取值范围在0-25之间abcdefh•1•Jk1mn0PqrstuVwXyz/(x) = x + imod 26明文字母密文字母明文-密文映射表加(解〉密明文密文加密解密着空明文窘空密文三、算法跟踪(一)加密跟踪(1) 选择要跟踪的算法即移位密码,在相应的算法计算区域填写明文和密钥2) 点击“跟踪加密”按钮,此时会弹出选择跟踪调试器对话框,如下图所示,对话框中所 列出的可选调试器根据系统中所安装的调试器而不同Visual Studio实时调试器 1^5发生了,经处理的异常(“Launch fcr user”),发生位罡是 ISES. ClientForms. Crypto. DebuggerServi ce. exe [1104]o可能的调试器(T):□将当前迭走的调试器设S为默认调试器》) 0手动迭择调试引擎(M)。
是否使用所迭调试器逬行调试?~是⑴~ ~否)~(3) 点击是进入下图,进行跟踪文件(F) ^(E)视图(V)濁试(D) IM(T)窗□(W)帮助(H)▼勾□ ▼;;► j| U」I O 時 Q1 与 I I 3 -.ClassicalCrypto.cs^ 氏DUusing System;usinc Systtm. Collections. Gtntnc: using System.Text;namespace ISES. ClientFornis. Crypto. DebuggerEngine {public class CltssictlCrypto : Systtm MtrshtlByRtDbj///移位密鸪加密 /// <7s\imm ary>public string DispltCMntEnCryplo(string input, int k){/*启动代码跟F10:逐方法甜踪,Fll:泡吾句^踪• F5: S掊汍行不艰踪,Shin+Fll:跳出方法◊ */ z System. Diagnostics. Debugger. Launch0:int length = input. Ln^tK;string output =for (int j = 0: j < length; j++){output += Conver t. ToChor ((Convtr t. Tolnt32 (i nput[j]) • 97 ♦ k) X 28 + 97);}return output;}///〈summary〉///移位密码解密 /// public string DisplaceaentDeCrypto(string output, int k)I譽 譬 罾胃 譽 譬 譽 ■譬 ■ •耆譬 耆 彎 ■■譬營HI(二)解密跟踪跟踪解密算法时,选择要跟踪的算法,在相应的算法计算区域填写密文和密钥,点击“跟 踪解密”按钮,具体参照加密跟踪步骤。
实验总结:通过本次试验,基本掌握了几种古典密码的算法,掌握了对数据的加密和解密成绩批阅教师批阅日期。