ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:331.30KB ,
资源ID:5205892      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5205892.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验十Hill密码的加密解密与破译.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验十Hill密码的加密解密与破译.docx

1、实验十Hill密码的加密解密与破译Hill密码的加密、解密与破译 实验十 Hill密码的加密、解密与破译 一、实验目的 本实验主要涉及代数,利用模运算意义下的矩阵乘法、求逆矩阵、线性无关、线性空间与线性变换等概念和运算,学习Hill密码体制的加密、解密和破译过程。 二、实验内容 (1)甲方收到与之有秘密通信往来的乙方的一个密文信息,密文内容: W O W U Y S B A C P G Z S A V C O V K P E W C P A D K P P A B U J C Q L Y X Q E Z A A C P P 按照甲方与乙方的约定,他们之间的密文通信采用Hill2密码,密钥为二阶

2、矩阵 且汉语拼音的26个字母与025之间的整数建立一一对应的关系,称之为字母的表值,具体的表值见表10. 1 明文字母的表值。问这段密文的原文是什么?表10. 1 明文字母的表值ABCDEFGHIJKLM12345678910111213NOPQRSTUVWXYZ1415161718192021222324250 (2)甲方截获了一段密文: O J W P I S W A Z U X A U U I S E A B A U C R S I P L B H A A M M L P J J O T E N H 经分析这段密文是用Hill2密码编译的,且这段密文的字母UCRS依次代表字母TACO,问

3、能否破译这段密文的内容? 三、Hill2密码的数学模型 、加密与解密过程 Hill2密码是一种传统的密码体制,它的加密过程可用以下框图描述: 明文-加密器-密文-普通信道-解密器 密码分析(敌方截获)- 明文 在这个过程中,运用的数学手段是矩阵运算,加密过程的具体步骤如下: 1根据明文字母的表值将明文信息用数字表示,设明文信息只需要26个拼音字母AZ(也可能不止26个,如还有数字、标点符号等),通信双方给出这26个字母表值(见表10.1明文字母的表值)。 2选择一个二阶可逆整数方阵A,称为Hill2密码的加密矩阵,它是这个加密体制的“密钥”(是加密的关键,仅通讯双方掌握)。问题(1)已给出了这

4、个二阶矩阵。3将明文字母依次逐对分组。Hill2密码的加密矩阵为二阶矩阵,则明文字母2个一组(可以推广至Hilln密码,则每n个明文字母为一组)。若最后一组只有一个字母,则补充一个没有实际意义的哑字母,这样使每一组都由2个明文字母组成。查出每个明文字母的表值,构成一个二维列向量。 4A乘以,得一新的2维列向量=A,由的两个分量反查字母表值得到的两个字母即为密文字母。 以上4步即为Hill2密码的加密过程。解密过程,即为上述过程的逆过程。 例如,明文为YI CHU FA,A=。将明文相邻2个字母分为一组:YI CH UF AA,最后一个字母A是为使最后一组的字母数为2而添加的,无实际意义。根据表

5、值可构造相应2维列向量:, (*)用矩阵A左乘上述4个向量,得到4个新的列向量:,为与表值对应作模26运算得到:,关于模m运算,可以验证,对两个正整数a1,a2进行加,减或乘的模m运算有如下规律: 这样,这4个新的2维列向量对应的字母为 QA SX GR CC 这段文字即为明文“YI CHU FA”的密文。要将这段密文解密,只要将上述加密过程逆转回去,即将密文按同样方式分组,查他们的表值即得: ,但如何由该组中的向量求得(*)中的向量呢?这是在模运算意义下,如何求解方程组:A=的问题。一个一般的n阶方阵可逆的充要条件为det A0。在模26意义下矩阵可逆与一般的矩阵可逆有所不同。记整数集合Zm

6、=0,1,2,m1,m为一正整数,模m可逆定义如下: 定义1 对于一个元素属于集合Zm的n阶方阵A,若存在一个元素属于Zm集合的方阵B,使得 AB=BA=E(mod m)称A为模m可逆,B为A的模m逆矩阵,记为B=A-1(mod m)E(mod m)的意义是,每一个元素减去m的整数倍后,可以化成单位矩阵。例如, 定义2 对Zm的一个整数a,若存在Zm的一个整数b,使得ab=1(mod m),称b为a的模m倒数或乘法逆,记作b=a1(mod m)。可以证明,如果a与m无公共素数因子,则a有唯一的模m倒数(素数是指除了1与自身外,不能被其他非零整数整除的正整数)。例如,31=9。利用这点,可以证明

7、下述命题:命题 元素属于Zm的方阵A模m可逆的充要条件是,m和det A没有公共素数因子。显然,所选加密矩阵必须符合该命题的条件。问题(1)所选择的明文字母共26个,m=26,26的素数因子为2和13,所以Z26上的方阵A可逆的充要条件为det A(mod m)不能被2和13整除。设,若A满足命题的条件,可验证其中(adbc)1是(ad-bc)(mod 26)的倒数。显然,(ad-bc)(mod 26)为Z26中的数。Z26中有模26倒数的整数及其倒数可见表10.2。 根据上述命题与表10.2,问题(1)所选加密矩阵A的行列式det A=3没有2与13这两个素数因子,所以A模26可逆。这样,在

8、模26的意义下,求解A=的问题即可解决:=A1(mod 26)根据上面所述的加密与解密过程可知,问题(1)有解。 将译出的明文依汉语拼音写出,经组合得: MEI GUO JIANG ZAI TAI PING YANG JIN XING HAI DI HE SHI YAN 即为“美国将在太平洋进行海底核试验”。 、破译过程 问题(2)属于破译问题。前面的加密与解密过程类似于在二维向量空间进行线性变换与其逆变换。每个明文向量是一个Zm上的二维向量,乘以加密矩阵后,仍为Zm上的一个二维向量。由于加密矩阵A为可逆矩阵,所以,如果知道两个线性无关的二位明文向量与其对应的密文向量,就可以求出它的加密矩阵A

9、及A-1. 问题(2)的密文中只出现一些字母,当然它可以是汉语拼音,或英文字母或其他语言的字母。所以可猜测秘密信息是由26个字母组成,设m=26。通常由破译部门通过大量的统计分析与语言分析确定表值。假如,所确定的表值为表10.1,已知在模26的意义下,,它有模26倒数,所以,1,2在模26意义下线性无关。类似地,也可以验证det 1,2=11(mod 26)线性无关。记P=1,2,C=1,2,则P=AC,A=PC1。这样,可以利用模26意义下的初等行变换,求得(A-1)T,因而可以求出A-1。利用A-1即可将问题(2)的密文解出。 。利用与问题(1)同样的解密方法,可以求得,这段密文的明文为:

10、 CL IN TO N|I S|G OI NG| TO| VI SI T|A| COUN TR Y|I N|M ID DL E|E AS T|T分析这段文字,如果依竖线所划分成的词汇,则这段密文可理解为如下一段文字: “Clinton is going to visit a country in Middle East”, 最后一个字母是哑字母。这样,可以认为破译成功。四、实验任务1在问题(2)中,若已知密文的前4个字母OJMP分别代表TACO,问能否将此段密文破译? 2.利用所介绍的Hill2密码体制的原理,根据给定的26个英文字母的乱序表值(见表10.3),设计与建立Hill4密码体制的加

11、密、解密与破译框图并建立必要的计算机程序。设英文26个字母以下面的乱序表与Z26中的整数对应:表10. 3ABCDEFGHIJKLM523220101584182501613NOPQRSTUVWXYZ731196122421171422119 (1)设,验证矩阵A能否作为Hill4密码体制的加密矩阵用框图画出你的演算过程,并编写相应的计算机程序。(2)设明文为 HILL CRYPTOGRAPHIC SYSTEM IS TRADITIONAL. 利用上面的表值与加密矩阵给此明文加密,并将得到的密文解密。画出加密与解密过程的框图并编写相应的计算机程序。(3)已知在上述给定表值下的一段Hill4密码

12、的密文为JCOW ZLVB DVLE QMXC, 对应的明文为 DELAY OPERATIONSU. 能否确定对应的加密矩阵?给出你的判断过程。 3.设已知一份密文为Hill2密码体系,其中出现频数最高的双字母是RH和NI,而在明文语言中,出现频数最高的双字母为TH和HE。由这些信息按表10.4给出的表值能得到什么样的加密矩阵?表10. 4明文字母的表值A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z 131415 16 17 18 19 20 21 22 23 24 25 4.如下

13、的密文据表10.1以Hill2加密,密文为VIKYNOTCLKYRJQETIRECVUZLNOJTUYDIMHRCFITQ已获知其中相邻字母LK表示字母KE,试破译这份密文。5.找出元素属于Z26的所有可能的Hill2密码加密矩阵,若截获了如下一段密文 :UTCQCVFOYQUVMGMGULFOLEYHDUHOPEASWXTIFBAMWT且已知它是根据表10.1按Hill2密码体制加密的,你能否将其解密?五、采用方法与实验结果 1、已知, 密文 明文 密文 明文按表可知,它没有数论倒数,所以,在模26意义下线性相关,无法得到模26可逆的加密矩阵A,故不能破译该密文。2、(1)验算过程MATLA

14、B程序:disp(输入密钥(矩阵)的维数);n=input();disp(输入密钥(矩阵,按行输入);key=zeros(n,n);for j=1:n for k=1:n key(j,k)=input(); endendd=round(mod(det(key),26);%求矩阵的行列式if d=0,2,4,6,8,10,12,13,14,16,18,20,22,24%判断矩阵是否可逆 error(A不可作为加密矩阵);sprintf(A可作为加密矩阵)end实验结果:A可作为加密矩阵 (2)明文为HILL CRYPTOGRAPHIC SYSTEM IS TRADITIONAL 密文为KEGT

15、KPNJ KYXR LAOL MZTP VYTU NHZS CEGD ZRPZ序号分组明文明文表值密文表值分组密文明文表值分组明文1HILL4181616010824KEGT4181616HILL2CRYP2111101725KPNJ21111CRYP3TIGR24386011226KYXR24386TIGR4APHI51418165316LAOL51418APHI5CSYS2121112139241MZTP2121112CSYS6TEMI2410131817112421VYTU24101318TEMI7STRA12246574912NHZS122465STRA8DITI20182418210

16、820CEGD20182418DITI9ONAL375169619ZRPZ37516ONALMATLAB程序:加密程序解密程序%输入密钥disp(输入密钥(矩阵)的维数);n=input();disp(输入密钥(矩阵,按行输入);key=zeros(n,n);for j=1:n for k=1:n key(j,k)=input(); endendd=round(mod(det(key),26);%求矩阵的行列式if d=0%判断矩阵是否可逆 error(密钥矩阵不可逆,无法实现Hill密码);end%输入明文message=input(输入明文 n,s);m=size(message);m=m

17、(2);if mod(m,n)=0 error(输入错误,明文长度应为矩阵维数的倍数);endfor i=1:m if message(i)=A & message(i)=Z message(i)=message(i)-64;%字母翻译为数字switch message(i) case 1 message(i)=5; case 2 message(i)=23; case 3 message(i)=2; case 4 message(i)=20; case 5 message(i)=10; case 6 message(i)=15; case 7 message(i)=8; case 8 mes

18、sage(i)=4; case 9 message(i)=18; case 10 message(i)=25; case 11 message(i)=26; case 12 message(i)=16; case 13 message(i)=13; case 14 message(i)=7; case 15 message(i)=3; case 16 message(i)=1; case 17 message(i)=19; case 18 message(i)=6; case 19 message(i)=12; case 20 message(i)=24; case 21 message(i)

19、=21; case 22 message(i)=17; case 23 message(i)=14; case 24 message(i)=22; case 25 message(i)=11; case 26 message(i)=9;end else error(输入错误,应该输入字母); endend%加密i=1;while i26 A(i)=mod(A(i),26); end if A(i)=0 A(i)=26; end%数字翻译为字母switch A(i) case 1 A(i)=16; case 2 A(i)=3; case 3 A(i)=15; case 4 A(i)=8; cas

20、e 5 A(i)=1; case 6 A(i)=18; case 7 A(i)=14; case 8 A(i)=7; case 9 A(i)=26; case 10 A(i)=5; case 11 A(i)=25; case 12 A(i)=19; case 13 A(i)=13; case 14 A(i)=23; case 15 A(i)=6; case 16 A(i)=12; case 17 A(i)=22; case 18 A(i)=9; case 19 A(i)=17; case 20 A(i)=4; case 21 A(i)=21; case 22 A(i)=24; case 23

21、A(i)=2; case 24 A(i)=20; case 25 A(i)=10; case 26 A(i)=11;end A(i)=A(i)+64;endstr=char(A);fprintf(密文为%s,str)%输入密钥disp(输入密钥(矩阵)的维数);n=input();disp(输入密钥(矩阵,按行输入);key=zeros(n,n);for j=1:n for k=1:n key(j,k)=input(); endendd=round(mod(det(key),26);%求矩阵的行列式%输入密文message=input(输入密文 n,s);m=size(message);m=m

22、(2);if mod(m,n)=0 error(输入错误,密文长度应为矩阵维数的倍数);endfor i=1:m if message(i)=A & message(i)=Z message(i)=message(i)-64;%字母翻译为数字switch message(i) case 1 message(i)=5; case 2 message(i)=23; case 3 message(i)=2; case 4 message(i)=20; case 5 message(i)=10; case 6 message(i)=15; case 7 message(i)=8; case 8 mes

23、sage(i)=4; case 9 message(i)=18; case 10 message(i)=25; case 11 message(i)=26; case 12 message(i)=16; case 13 message(i)=13; case 14 message(i)=7; case 15 message(i)=3; case 16 message(i)=1; case 17 message(i)=19; case 18 message(i)=6; case 19 message(i)=12; case 20 message(i)=24; case 21 message(i)

24、=21; case 22 message(i)=17; case 23 message(i)=14; case 24 message(i)=22; case 25 message(i)=11; case 26 message(i)=9;end else error(输入错误,应该输入字母); endend%r1为d的逆switch d case 1 r1=1; case 3 r1=9; case 5 r1=21; case 7 r1=15; case 9 r1=3; case 11 r1=19; case 15 r1=7; case 17 r1=23; case 19 r1=11; case

25、21; r1=5; case 23 r1=17; case 25 r1=25; otherwise disp(d倒数不存在);enddetk=det(key);invk=inv(key);k=detk*invk;key2=round(mod(r1*k,26);i=1;while i26 B(i)=round(mod(B(i),26); end if B(i)=0 B(i)=26; end%数字翻译为字母switch B(i) case 1 B(i)=16; case 2 B(i)=3; case 3 B(i)=15; case 4 B(i)=8; case 5 B(i)=1; case 6 B

26、(i)=18; case 7 B(i)=14; case 8 B(i)=7; case 9 B(i)=26; case 10 B(i)=5; case 11 B(i)=25; case 12 B(i)=19; case 13 B(i)=13; case 14 B(i)=23; case 15 B(i)=6; case 16 B(i)=12; case 17 B(i)=22; case 18 B(i)=9; case 19 B(i)=17; case 20 B(i)=4; case 21 B(i)=21; case 22 B(i)=24; case 23 B(i)=2; case 24 B(i)=20; case 25 B(i)=10; case 26 B(i)=11;end B(i)=B(i)+64;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1