鱼C论坛

 找回密码
 立即注册
查看: 6898|回复: 19

[技术交流] 密码学加密算法(未删节版第一部分:古典密码密码)

[复制链接]
发表于 2011-5-20 19:34:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1 古典密码实验 .zip (725.17 KB, 下载次数: 124)
这是夜猫学校的密码学的实验    用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互素
        尝试不同的密钥,并根据密钥的取值范围,思考移位密码、乘法密码和仿射密码的安全性
        观察明文与密文中字母频度的变化,思考字母频度分析对维吉尼亚密码是否具有威胁
        从跟踪的算法源码对照理解算法的原理,并思考是否有其它的实现方法
       

因为发帖插入截图太繁琐 需要看全版的自己下载附件吧~嘻嘻~。       
       
       

评分

参与人数 2荣誉 +9 鱼币 +2 收起 理由
故乡的风 + 3 + 2 猫姐,不错哦。。。
小甲鱼 + 6 小猫做的不错!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-5-20 19:50:16 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-5-20 20:56:17 | 显示全部楼层
回复 x8888k 的帖子

你把附件下载下来看  上面有图  很好理解的  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-5-20 21:53:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-5-21 01:09:42 | 显示全部楼层
回复 elyric 的帖子

你要附件的话留下邮箱,关于无法下载的问题我会和小甲鱼反映的。嘻嘻
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-21 01:40:46 | 显示全部楼层
回复 elyric 的帖子

QQ截图未命名.jpg

朋友,我们用了多个账号验证可以下载。

请问他提示什么错误信息呢?麻烦帮忙提供下,我们好尽快修复~

谢谢~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-21 12:33:42 | 显示全部楼层
古典密码,现在用处已经不大了,如果是想了解密码的发展历史倒是可以看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-5-23 21:21:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-1 11:35:14 | 显示全部楼层
你把附件下载下来看  上面有图  很好理解的  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-8 16:54:12 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-22 01:59:34 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-8-15 08:38:25 | 显示全部楼层
这个问题太难啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-15 00:54:03 | 显示全部楼层

谢谢楼主分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-7 19:10:13 | 显示全部楼层
学习啦,哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-10 23:33:21 | 显示全部楼层

不错不错,学习了哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-11 01:11:31 | 显示全部楼层
顶     加油   加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-17 08:51:28 | 显示全部楼层
好文章转过来方便自己看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-23 23:14:38 | 显示全部楼层
很久没研究啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-8 10:53:41 | 显示全部楼层
:lol:楼主辛苦了~!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-2 16:14:41 | 显示全部楼层
楼主辛苦了~!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 03:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表