matlab实验四 古典密码与破译
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四古典密码与破译
姓名:****学号:********实验日期:2010年5月21日实验目的:
1、了解古典密码的主要内容,理解古典密码的加密与解密原理、破译思想;
2、学会用Matlab 软件来实现古典密码体制的加密和破译过程;能用Matlab 编写Hill2意义下的古典密码加密、解密和破译程序;
3、掌握Matlab 中如何求模运算意义下的矩阵乘法、求逆矩阵、线性无关、线性空间与线性变换等概论和运算;实验项目:
1、按照甲方与乙方的约定,他们之间的密文通信采用Hill2密码,密钥为二阶矩阵
120
4A ⎛⎫=
⎪⎝⎭
且汉语拼音的26个字母以及空格与0~26之间的整数建立一一对应
的关系,试修正表1、表2以及附录中的程序,以给出模27意义下矩阵可逆的判别方法和具体求法。
2.若将自己的姓名的拼音作为明文,密钥等参见练习1,求其在模27意义下的Hill2密文。
3.若将自己的姓名的拼音作为Hill2密文,密钥等参见练习1,求其在模27意义下的明文。
4.利用所介绍的Hill2密码体制的原理,根据给定的26个英文字母的乱序表值(见表4),设计与建立Hill4密码体制的加密、解密与破译框图并建立必要的计算机程序.设英文26个字母以下面的乱序表与
26
Z 中的整数对应:
(1)设⎪⎪⎪⎪
⎪⎭
⎫
⎝⎛=10.11.6.109
.4.8.510.5.9.65.9.6.8A ,验证矩阵A 能否作为Hill 4密码体制的加密矩阵.用框
图画出你的验算过程,并编写相应的计算机程序。
(*)(2)设明文为HILL CRYPTOGRAPHIC SYSTEM IS TRADJITIONAL.利用上面的表值与加密矩阵给此明文加密,并将得到的密文解密.画出加密与解密过程的框图并编写相应的计算机程序。
5.设已知一份密文为Hill2密码体系,其中出现频数最高的双字母是RH和NI,而在明文语言中,出现频数最高的双字母为TH和HE.由这些信息按表5给出的表值能得到什么样的加密矩阵?
实验背景:
保密通讯在军事、政治、经济斗争和竞争中的重要性是不言而喻的.在斗争或竞争中,一方要将信息传递给己方的接收者,同时又要防止其他人(特别是敌方)知道信息的内容.他采用的一种方式是:将原来的信息(称为明文)经过加密,变成密文之后发送出去,使敌方即使得到密文也读不懂,而合法的接收者收到密文之后却可以按照预先约定好的方法加以解密,再翻译成明文.而敌方却要千方百计从密文破译出明文来.一方如何编制密码使之不易被破译,另一方则要找到其弱点加以破译,这就构成了密码学的主要内容.
实验具体过程
1.题目:实际问题(甲)的修正:按照甲方与乙方的约定,他们之间的密文通信采用
Hill2密码,密钥为二阶矩阵
12
04
A⎛⎫
= ⎪
⎝⎭且汉语拼音的26个字母以及空格(字母A~Z的表
值为1~26,空格的表值为0)与0~26之间的整数建立一一对应的关系,称之为字母的表值,试修正表1、表2以及附录中的程序,以给出模27意义下矩阵可逆的判别方法和具体求法。
理论指导或编辑说明:
1.input('一些提示语句'):由键盘输入表达式。
2、[m,n]=size(a):求矩阵a的维数;mod(m,n):求m被n整除后的余数。
3、gcd(m,n):求m,n的最大公约数;inv(a):求矩阵a的逆矩阵。
4、fprintf(fid,format,A,...):以指定格式将数据写入文件,若无参数fid,则输出到屏幕.
程序:
1、求表2模27倒数表的程序
m=27;
for a=1:m
for i=1:m
if mod(a*i,m)==1
fprintf('The INVERSE(mod%d)of number:%d is:%d\n',m,a,i);break;
end;end;end
2、模27意义下矩阵可逆的判别方法和具体求法的程序
m=27;
aa=input('输入一个2×2的矩阵,格式:[a11a12;a21a22]:')
while size(aa)~=[22]
aa=input('输入一个2×2的矩阵,格式:[a11a12;a21a22]:')
end
a=det(aa);bb=aa;
if gcd(m,a)~=1
disp('该矩阵不可逆')
else
for i=1:m
if mod(a*i,m)==1
antaa=i;break;
end
end
astar=[aa(2,2)-aa(1,2);-aa(2,1)aa(1,1)];
invaa=mod(antaa*astar,m);
disp(['原矩阵是:',mat2str(aa),',它的逆矩阵(mod',num2str(m),')是:',mat2str(invaa)]) end
程序的输出结果:
1、求表2模27倒数表的程序输出结果
The INVERSE(mod27)of number:1is:1
The INVERSE(mod27)of number:2is:14
The INVERSE(mod27)of number:4is:7
The INVERSE(mod27)of number:5is:11
The INVERSE(mod27)of number:7is:4
The INVERSE(mod27)of number:8is:17
The INVERSE(mod27)of number:10is:19
The INVERSE(mod27)of number:11is:5
The INVERSE(mod27)of number:13is:25
The INVERSE(mod27)of number:14is:2
The INVERSE(mod27)of number:16is:22
The INVERSE(mod27)of number:17is:8
The INVERSE(mod27)of number:19is:10
The INVERSE(mod27)of number:20is:23
The INVERSE(mod27)of number:22is:16
The INVERSE(mod27)of number:23is:20
The INVERSE(mod27)of number:25is:13
The INVERSE(mod27)of number:26is:26
2、模27意义下矩阵可逆的判别方法和具体求法的程序(运行时输入:[12;04]
aa=
12
04
原矩阵是:[12;04],它的逆矩阵(mod27)是:[113;07]
对实验题目的解答:
1、修正后的表1和表2分别为:
表1:明文字母的表值
A B C D E F G H I J K L M N 1234567891011121314