|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1 古典密码实验 .zip
(725.17 KB, 下载次数: 125)
这是夜猫学校的密码学的实验 用ISES实验平台实现。我完成后整理了如下的实验报告 希望加深大家对古典密码的认识。
古典密码实验
【实验环境】
ISES客户端
Microsoft CLR Debugger 2005或其它调试器
【实验内容】
通过运算器工具实现移位密码、乘法密码、仿射密码、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是满足0≤m,c,k≤25的整数。
乘法密码
乘法密码是通过对字母等间隔抽取以获得密文,其加解密可分别表示如下:
c=mk(mod 26)
m=ck-1(mod26)
其中,m、c、k是满足0≤m,c,k≤25,且gcd(k,26)=1的整数。
仿射密码
仿射密码的加密是一个线性变换,将移位密码和乘法密码相结合,其加解密可分别表示为:
c=Ea,b(m)=am+b(mod 26)
m=Da,b(m)=a-1(c-b)(mod 26)
其中:a、b是密钥,是满足0≤a,b≤25和gcd(a,26)=1的整数,即a和26互素;a-1表示a的逆元,即a-1•a≡1 mod 26。
Playfair密码
Playfair是一个人工对称加密技术,由Charles Wheatstone在1854年发明,得名于其推广者Lord Playfair。Playfair密码是一种著名的双字母单表替代密码,实际上Playfair密码属于一种多字母替代密码,它将明文中的双字母作为一个单元对待,并将这些单元转换为密文字母组合。Playfair密码基于一个5×5的字母矩阵,该矩阵通过使用一个英文短语或单词串即密钥来构造,去掉密钥中重复的字母得到一个无重复字母的字符串,然后再将字母表中剩下的字母依次从左到右、从上往下填入矩阵中。
例如,若密钥为“playfair is a digram cipher”,去除重复字母后,得到有效密钥“playfirsdgmche”,可得字母矩阵如图1.1.11所示。
图1.1.11
注意:字母I,J占同一个位置。
设明文字母对为(P1,P2),Playfair密码的加密算法如下:
若P1、P2在同一行,密文C1、C2分别是紧靠P1、P2右端的字母,其中第一列被看作是最后一列的右方(解密时反向);
若P1、P2在同一列,密文C1、C2分别是紧靠P1、P2下方的字母,其中第一行被看作是最后一行的下方(解密时反向);
若P1、P2不在同一行,也不在同一列,则C1、C2是由P1、P2确定的矩形其它两角的字母,且C1和P1在同一行,C2和P2在同一行(解密时处理方法相同);
若P1=P2,则两个字母间插入一个预先约定的字母,如q,并用前述方法处理;如balloon,则以ba lq lo on 来加密;
若明文字母数为奇数,则在明文尾填充约定字母。
维吉尼亚密码
Vigenenre密码是最著名的多表代换密码,是16世纪法国著名密码学家Blaise de Vigenenre发明的。Vigenenre密码使用一个词组作为密钥,密钥中每一个字母用来确定一个代换表,每一个密钥字母被用来加密一个明文字母,第一个密钥字母加密第一个明文字母,第二个密钥字母加密第二个明文字母,等所有密钥字母使用完后,密钥再次循环使用,于是加解密前需先将明密文按照密钥长度进行分组。密码算法可表示如下:
设密钥K=(k1,k2,…,kd),明文M=(m1,m2,…,mn),密文C=(c1,c2,…,cn);
加密变换为:ci=Eki(mi)=mi+ki(mod 26)
解密变换为:mi=Dki(ci)=ci-ki(mod 26)
通常通过查询维吉尼亚表进行加解密。
【实验步骤】
此处以移位密码为例说明,乘法密码、仿射密码、Playfair密码和维吉尼亚密码可参照完成。
加解密计算
加密
参照实验原理,在明文栏输入所要加密的明文,在密钥栏输入相应的密钥,如图1.1.12所示。
图1.1.12
点击“加密”按钮,在密文文本框内就会出现加密后的密文,如图1.1.13所示。
图1.1.13
解密
在密文栏相应的文本框内输入所要解密的密文,在密钥栏输入相应的密钥,如图1.1.14所示。
图1.1.14
点击“解密”按钮,在明文文本框内就会出现解密后的明文,如图1.1.15所示。
图1.1.15
扩展实验
点击扩展实验下的按钮,进入相应算法的扩展实验面板,此处为移位密码扩展实验的面板,如图1.1.16所示。
图1.1.16
在“密钥k”栏中输入一个介于0~25之间的整数,如19,点击“确定”按钮后,系统显示出“明文-密文映射表”,如图1.1.17所示。
图1.1.17
在明文文本框中输入明文(如“Classical Cryptology.”),并点击“加密”按钮,在密文文本框内就会出现加密后的密文(如“VETLLBVTEVKRIMHEHZR”。注,系统会自动删除非英文字母,并自动将明文变换为小写字母),如图1.1.18所示。
图1.1.18
解密过程是加密过程的逆过程,在密文文本框中输入密文(确保密钥已经正确输入),点击“解密”按钮,即可得到相应的明文。
算法跟踪
加密跟踪
选择要跟踪的算法即移位密码,在相应的算法计算区域填写明文和密钥。
点击“跟踪加密”按钮,此时会弹出选择跟踪调试器对话框,如图1.1.19所示,对话框中所列出的可选调试器根据系统中所安装的调试器而不同。
图1.1.19
选择“新实例 Microsoft CLR Debugger 2005”或其它调试器并点击“是”,打开调试器如图1.1.110所示。
图1.1.110
如果出现选择编码的对话框时选择“(自动检测)”, 进入代码跟踪界面,如图1.1.111所示。
图1.1.111
选择对应c#源代码的xxx.cs标签页并按下快捷键F10开始跟踪,如图1.1.112所示。
图1.1.112
当算法跟踪完毕后,会自动切换回实验窗口并显示计算结果。
查看实验面板中的计算结果,然后切换回调试器,选择工具栏中的“停止调试”按钮或按下SHIFT + F5快捷键以停止调试,如图1.1.113所示。
图1.1.113
关闭调试器,如图1.1.114所示,弹出保存对话框,选择“否”不保存。
图1.1.114
解密跟踪
跟踪解密算法时,选择要跟踪的算法,在相应的算法计算区域填写密文和密钥,点击“跟踪解密”按钮,具体参照加密跟踪步骤。
【实验思考】
思考仿射密码为何要求a与26互素
尝试不同的密钥,并根据密钥的取值范围,思考移位密码、乘法密码和仿射密码的安全性
观察明文与密文中字母频度的变化,思考字母频度分析对维吉尼亚密码是否具有威胁
从跟踪的算法源码对照理解算法的原理,并思考是否有其它的实现方法
因为发帖插入截图太繁琐 需要看全版的自己下载附件吧~嘻嘻~。
|
评分
-
查看全部评分
|