Hill密码地加密论文设计内含matlab程序代码.docx

上传人:b****0 文档编号:17859891 上传时间:2023-08-04 格式:DOCX 页数:21 大小:93.59KB
下载 相关 举报
Hill密码地加密论文设计内含matlab程序代码.docx_第1页
第1页 / 共21页
Hill密码地加密论文设计内含matlab程序代码.docx_第2页
第2页 / 共21页
Hill密码地加密论文设计内含matlab程序代码.docx_第3页
第3页 / 共21页
Hill密码地加密论文设计内含matlab程序代码.docx_第4页
第4页 / 共21页
Hill密码地加密论文设计内含matlab程序代码.docx_第5页
第5页 / 共21页
Hill密码地加密论文设计内含matlab程序代码.docx_第6页
第6页 / 共21页
Hill密码地加密论文设计内含matlab程序代码.docx_第7页
第7页 / 共21页
Hill密码地加密论文设计内含matlab程序代码.docx_第8页
第8页 / 共21页
Hill密码地加密论文设计内含matlab程序代码.docx_第9页
第9页 / 共21页
Hill密码地加密论文设计内含matlab程序代码.docx_第10页
第10页 / 共21页
Hill密码地加密论文设计内含matlab程序代码.docx_第11页
第11页 / 共21页
Hill密码地加密论文设计内含matlab程序代码.docx_第12页
第12页 / 共21页
Hill密码地加密论文设计内含matlab程序代码.docx_第13页
第13页 / 共21页
Hill密码地加密论文设计内含matlab程序代码.docx_第14页
第14页 / 共21页
Hill密码地加密论文设计内含matlab程序代码.docx_第15页
第15页 / 共21页
Hill密码地加密论文设计内含matlab程序代码.docx_第16页
第16页 / 共21页
Hill密码地加密论文设计内含matlab程序代码.docx_第17页
第17页 / 共21页
Hill密码地加密论文设计内含matlab程序代码.docx_第18页
第18页 / 共21页
Hill密码地加密论文设计内含matlab程序代码.docx_第19页
第19页 / 共21页
Hill密码地加密论文设计内含matlab程序代码.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Hill密码地加密论文设计内含matlab程序代码.docx

《Hill密码地加密论文设计内含matlab程序代码.docx》由会员分享,可在线阅读,更多相关《Hill密码地加密论文设计内含matlab程序代码.docx(21页珍藏版)》请在冰点文库上搜索。

Hill密码地加密论文设计内含matlab程序代码.docx

Hill密码地加密论文设计内含matlab程序代码

Hill密码的加密,解密与破译

摘要

对于问题1.1:

本文采用

密码通信,对明文进行加密。

利用已知的密钥矩阵,首先,将密文转化为对应表值数字。

其次,对密文的数字转化为矩阵。

最后,对明文解密。

对于问题1.2:

本文给出一组明文和密文,二者满足构成密钥的条件,通过求解的到密钥,并进行问题1.1的解题过程破译这段密文。

对于问题2.1:

本文给出

密码矩阵A,并求出该矩阵的值是否与26互素,加以判断。

若互素则能成为密钥,否则不能构成密钥。

对于问题2.2:

利用问题2.1所给的密码矩阵A,按照问题1.1的解题思路,将得到的密文解密。

对于问题2.3:

本文给出一段

密码的密文和其对应的明文,通过检验二者是否满足构成密钥的条件,若满足解的密钥,并写出求解过程;若不满足加以说明。

对于问题3:

本文给出明文频数最高的字母TH和HE,及密文频数最高的字母RH和NI。

两两组合得到两组“密钥”,并检验它们是否满足构成密钥的条件,若满足则解除密钥。

对于问题4:

本文给出频数最高的相邻明文字母KE和相邻密文字母LK,采用

密码通信,利用所给字母与其他字母组合,构造2×2的矩阵,并检验是否满足构成密钥的条件,加以排除得到所要的密钥。

若有满足条件的矩阵,破译所给密文。

对于问题5:

本文采用

密码通信,根据26个字母搭配出2×2的所有矩阵,利用矩阵的值与26互质,加以排除不符合条件的矩阵,并求出满足条件的密钥,破译该段密文,再利用密文是否通顺加以排除,得到所要的明文和密钥。

关键字密钥mod(26)逆mod(26)倒数

一、Hill2密码的数学模型的主要符号说明

wHill密钥的维数

A密钥矩阵

S明文

Y密文

m所用的表值编号

YW哑文

二、Hill2密码的数学模型

Hill2密码是一种传统的密码体制加密过程的具体步骤如下:

(1)、根据明文字母的表值将明文信息用数字表示,设明文信息只需要26个拼音字母A~Z(也可能不止26个,如还有数字、标点符号等),通信双方给出这26个字母表值(见表10.1明文字母的表值)。

(2)、选择一个二阶可逆整数方阵A,称为Hill2密码的加密矩阵,它是这个加密体制的“密钥”(是加密的关键,仅通讯双方掌握)。

问题

(1)已给出了这个二阶矩阵。

(3)、将明文字母依次逐对分组。

Hill2密码的加密矩阵为二阶矩阵,则明文字母2个一组(可以推广至Hilln密码,则每n个明文字母为一组)。

若最后一组只有一个字母,则补充一个没有实际意义的哑字母,这样使每一组都由2个明文字母组成。

查出每个明文字母的表值,构成一个二维列向量α。

(4)、A乘以α,得一新的2维列向量β=Aα,由的两个分量反查字母表值得到的两个字母即为密文字母。

以上4步即为Hill2密码的加密过程。

解密过程,即为上述过程的逆过程。

1、实际问题:

1.1、问题陈述

甲方收到与之有秘密通信往来的乙方的一个密文信息,密文内容:

WOWUYSBACPGZSAVCOVKPEWCPADKPPABUJCQLYXQEZAACPP

按照甲方与乙方的约定,他们之间的密文通信采用

密码,密钥为二阶矩阵

,且汉语拼音的26个字母与0-25之间的整数建立一一对应的关系,称之为字母的表值,具体的表值见表1,问这段密文的原文是什么?

1.2、问题分析:

首先给出如下定义:

定义1:

为定义在集合

上的

阶方阵,若存在一个定义在

上的方阵

,使得

则称

可逆,

的模

逆矩阵,记为

定义2:

,若存在

使得

,则称

的模

倒数或乘法逆,记作

由于所有加密与解密过程都是在模26意义下进行的,所以要对一段明文进行加密,必须使得密钥矩阵满足

与26是互素的。

根据程序画出流程如图如下:

No

1.3程序运行结果:

>>Y=’WOWUYSBACPGZSAVCOVKPEWCPADKPPABUJCQLYXQEZAACPP’;

>>m=1;

>>A=[12;03];

>>YW='XYZ';

>>S=jie_mi2(Y,A,YW,m)

S=

MEIGUOJIANGZAITAIPINGYANGJINXINGHAIDIHESHIYANN

>>Y=jia_mi2(S,A,YW,m)

Y=

WOWUYSBACPGZSAVCOVKPEWCPADKPPABUJCQLYXQEZAACPP

2.1、问题陈述

甲方截获了一段密文:

OJWPISWAZUXAUUISEABAUCRSIPLBHAAMMLPJJOTENH经分析这段密文是用

密码编译的,且这段密码的字母UCRS一次代表字母TACO,问能否破译这段密文的内容?

2.2、问题分析

根据题意明文与密文存在一一对应关系:

且存在:

经过查表得到:

所以,用穷举法得到满足上述等式的密钥矩阵,再进一步判断

是否与26互素,若互素则可以求出在26意义下的模倒数。

模倒数表如下:

表1

a

1

3

5

7

9

11

15

17

19

21

23

25

1

9

21

15

3

19

7

23

11

5

17

25

显然,由上式所确定的密钥矩阵

是惟一的,通过

求解出模26意义下的密钥逆矩阵

进行解密。

2.3、程序运算结果

>>a='TACO';

>>b='UCRS';

>>m=1;

>>A=qiujie_miyao(a,b,m)

A=

11

03

>>Y='OJWPISWAZUXAUUISEABAUCRSIPLBHAAMMLPJJOTENH';

>>YW2='XYZ';

>>S=jie_mi2(Y,A,YW,m)

S=

CLINTONISGOINGTOVISITACOUNTRYINMIDDLEEASTT

二、实验任务

问题1

1.1、问题陈述

在问题

(2)中,若已知密文的前4个字母OJWP分别代表TACO,问能否将此密文破译?

不能,因为解得的密钥的行列式与26不互素,不能得到对应的模26逆矩阵。

求解密钥矩阵流程图如下

NoooooooO20561oooo

1.2、运行结果

>>a='TACO';

>>b='OJWP';

>>m=1;

>>A=qiujie_miyao(a,b,m)

A=

167

2424

>>D=det(A)

D=

216

>>n=gcd(D,26)

n=

2

问题二

利用

密码体制的原理,根据给定的26个英文字母的乱序表值(见表2),设计与建立

密码体制的加密,解密与破译框图并建立必要的计算机程序,设英文26个字母以下面的乱序表与

中的整数对应:

表2

A

B

C

D

E

F

G

H

I

J

K

L

M

5

23

2

20

10

15

8

4

18

25

0

16

13

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

7

3

1

19

6

12

24

21

17

14

22

11

9

2.1.1、问题陈述

,验证矩阵A能否作为

密码体制的加密矩阵,用框图画出你的验算过程,并编写相应的计算机程序。

2.1.2、问题分析

A可用作密钥,因为其行列式值为-1,与26互素。

2.1.3、运行结果

编程计算得A的模26逆矩阵如下:

>>A=invmod(A)

A=

232051

211181

220625

2522225

det(A)

|A|=

-1.0000

2.2.1、问题陈述

设明文为

HILLCRYPTOGRAPHICSYSTEMISTRADITIONAL.

利用上面的表值与加密矩阵给明文加密,并将得到的密文解密。

画出加密与解密过程的框图并编写相应的计算机程序。

框图如下:

2.2.2、运行结果

>>A=[8695;69510;5849;106114];

>>YW='Z';

>>m=2;

>>w=4;

>>S='HILLCRYPTOGRAPHICSYSTEMISTRADITIONAL';

>>Y=jia_mi2(S,A,YW,m,w)

Y=KEGTKPNJKYXRLAOLMZTPVYTUNHZSCEGDZRPZ

>>S=jie_mi2(Y,A,YW,m,w)

S=HILLCRYPTOGRAPHICSYSTEMISTRADITIONAL

2.3.1、问题陈述

已知在上述给定表值下的一段

密码的密文为:

JCOWZLVBDVLEQMXC,对应的明文为DELAYOPERATIONSU,能否确定对应的加密矩阵?

给出你的判断过程。

能。

2.3.2、运行结果

>>a='DELAYOPERATIONSU';

>>b='JCOWZLVBDVLEQMXC';

>>m=2;

>>w=4;

>>A=qiujie_miyao(a,b,m,w)

A=

8695

69510

5849

106114

问题3

3.1、问题重述

设已知一份为

密码体系,其中出现频数最高的双字母是RH和NI,而在明文语言中,出现频数最高的双字母为TH和HE。

由这些信息按表3给出的表值能得到什么样的加密矩阵?

表3

A

B

C

D

E

F

G

H

I

J

JK

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

13

14

15

16

17

18

19

20

21

22

23

24

25

3.2、问题分析

不能,因为两组组合解得的两个矩阵的行列式值都不与26互素,不能得到对应的模26逆矩阵。

3.3、运行结果

>>a='THHE';

>>b='RHNI';

>>m=3;

>>w=2;

>>A=qiujie_miyao(a,b,m,w)

A=

324

2425

>>D=gcd(det(A),26)

D=

1

>>b='NIRH';

>>A=qiujie_miyao(a,b,m,w)

>>b='NIRH';

A=qiujie_miyao(a,b,m,w)

A=

1124

925

>>D=gcd(det(A),26)

D=

1

问题4

4.1、问题重述

如下的密文据表1以Hill2加密,密文为

VIKYNOTCLKYRJQETIRECVUZLNOJTUYDIMHRCFITQ

已获知其中相邻字母LK表示字母KE,试破译这份密文。

4.2、问题分析

通过密文‘LK’对应的明文‘KE’得出:

且存在

,其中

为密钥。

所以,求得的

必满足:

4.3、运行结果

>>a='KE';

>>b='LK';

>>Y='VIKYNOTCLKYRJQETIRECVUZLNOJTUYDIMHRCFITQ';

>>m=1;

>>SJ=po_yi04(Y,a,b,m)

问题5

5.1、问题重述

找出元素属于

的所有可能的

密码加密矩阵。

若截获了如下一段密文

UTCQCVFOYQUVMGMGULFOEYHDUHOPEASWXTIFBAMWT

且已知它是根据表1按

密码体制加密的,你能否将其解密?

5.2、问题分析

能,将密文通过所有可能密钥进行解密,对结果进行筛选,进行人工分析即可得出结果。

程序:

%%%%%%%%%%%%%%%%%%%%加密程序%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

functionmi_wen=ja_mi(A,ming_wen,m,w)

%‘A’为解密矩阵,‘m’为选取参考表值类型,‘w’维数

n=length(ming_wen);

switchm%将密文转换相应的数字

case1

ming_wen=zimu_to_shuzi1(ming_wen);

case2

ming_wen=zimu_to_shuzi2(ming_wen);

case3

ming_wen=zimu_to_shuzi3(ming_wen);

end

Z=[];

ifmod(n,w)==0

S=ming_wen;

else

fori=1:

w-mod(n,w)%判断密文长度是否能被w整除

Z(i)=ming_wen(n);

S=[ming_wen,Z];

end

end

ming_wen=S;

n=length(ming_wen);

H=zeros(w,n/w);

fori=1:

n/w

H(:

i)=ming_wen(i*w-w+1:

i*w);

end

mi_wen=mod(A*H,26);

C=[];

fori=1:

n/w

C=[C,mi_wen(:

i)'];

end

mi_wen=C;

switchm%将密文转换相应的数字

case1

mi_wen=shuzi_to_zimu1(mi_wen);

case2

mi_wen=shuzi_to_zimu2(mi_wen);

case3

mi_wen=shuzi_to_zimu3(mi_wen);

end

mi_wen=char(mi_wen);

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%解密程序%%%%%%%%%%%%%%%%%

functionming_wen=jie_mi(A,mi_wen,m,w)

%解密

%‘A’为解密矩阵,‘m’为选取参考表值类型,‘w’维数

n=length(mi_wen);

switchm

case1

mi_wen=zimu_to_shuzi1(mi_wen);%将密文转换相应的数字

case2

mi_wen=zimu_to_shuzi2(mi_wen);%将密文转换相应的数字

case3

mi_wen=zimu_to_shuzi3(mi_wen);%将密文转换相应的数字

end

Z=[];

ifmod(n,w)==0

S=mi_wen;

else

fori=1:

w-mod(n,w)%判断密文长度是否能被w整除

Z(i)=mi_wen(n);

S=[mi_wen,Z];

end

end

mi_wen=S;

n=length(mi_wen);

H=zeros(w,n/w);

fori=1:

n/w

H(:

i)=mi_wen(i*w-w+1:

i*w);

end

B=invmod(A);

B=mod(B,26);

ming_wen=mod(B*H,26);

C=[];

fori=1:

n/w

C=[C,ming_wen(:

i)'];

end

ming_wen=C;

switchm

case1

ming_wen=shuzi_to_zimu1(ming_wen);%将密文转换相应的数字

case2

ming_wen=shuzi_to_zimu2(ming_wen);%将密文转换相应的数字

case3

ming_wen=shuzi_to_zimu3(ming_wen);%将密文转换相应的数字

end

ming_wen=char(ming_wen);

end

%%%%%%%%%%%%%%%%%%密钥求解%%%%%%%%%%%%%%%%%%%%%%

functionA=miyao_qiujie(a,b,m,w)

%求解密钥矩阵

%a为明文,b为密文,m为所选表值,w为密钥矩阵维数

switchm

case1

a=zimu_to_shuzi1(a);

b=zimu_to_shuzi1(b);

case2

a=zimu_to_shuzi2(a);

b=zimu_to_shuzi2(b);

case3

a=zimu_to_shuzi3(a);

b=zimu_to_shuzi3(b);

end

switchw

case2%二维密钥

ac=[];

bd=[];

fori=0:

25

forj=0:

25

if

mod(i*a

(1)+j*a

(2),26)==b

(1)&mod(i*a(3)+j*a(4),26)==b(3)

ac=[i,j];

end

ifmod(i*a

(1)+j*a

(2),26)==b

(2)&mod(i*a(3)+j*a(4),26)==b(4)

bd=[i,j];

end

end

end

A=[ac;bd];

case3%三维密钥

abc=[];

def=[];

ghi=[];

fori=0:

25

forj=0:

25

fork=0:

25

ifmod(i*a

(1)+j*a

(2)+k*a(3),26)==b

(1)&mod(i*a(4)+j*a(5)+k*a(6),26)==b

(2)&mod(i*a(7)+j*a(8)+k*a(9),26)==b(3)

abc=[i,j,k];

end

ifmod(i*a

(1)+j*a

(2)+k*a(3),26)==b(4)&mod(i*a(4)+j*a(5)+k*a(6),26)==b(5)&mod(i*a(7)+j*a(8)+k*a(9),26)==b(6)

def=[i,j,k];

end

ifmod(i*a

(1)+j*a

(2)+k*a(3),26)==b(7)&mod(i*a(4)+j*a(5)+k*a(6),26)==b(8)&mod(i*a(7)+j*a(8)+k*a(9),26)==b(9)

ghi=[i,j,k];

end

end

end

end

A=[abc;def;ghi];

case4%四维密钥

abcd=[];

efgh=[];

ijkl=[];

mnop=[];

fori=0:

25

forj=0:

25

fork=0:

25

forl=0:

25

ifmod(i*a

(1)+j*a

(2)+k*a(3)+l*a(4),26)==b

(1)&mod(i*a(5)+j*a(6)+k*a(7)+l*a(8),26)==b

(2)&mod(i*a(9)+j*a(10)+k*a(11)+l*a(12),26)==b(3)&mod(i*a(13)+j*a(14)+k*a(15)+l*a(16),26)==b(4)

abcd=[i,j,k,l];

end

ifmod(i*a

(1)+j*a

(2)+k*a(3)+l*a(4),26)==b(5)&mod(i*a(5)+j*a(6)+k*a(7)+l*a(8),26)==b(6)&mod(i*a(9)+j*a(10)+k*a(11)+l*a(12),26)==b(7)&mod(i*a(13)+j*a(14)+k*a(15)+l*a(16),26)==b(8)

efgh=[i,j,k,l];

end

ifmod(i*a

(1)+j*a

(2)+k*a(3)+l*a(4),26)==b(9)&mod(i*a(5)+j*a(6)+k*a(7)+l*a(8),26)==b(10)&mod(i*a(9)+j*a(10)+k*a(11)+l*a(12),26)==b(11)&mod(i*a(13)+j*a(14)+k*a(15)+l*a(16),26)==b(12)

ijkl=[i,j,k,l];

end

ifmod(i*a

(1)+j*a

(2)+k*a(3)+l*a(4),26)==b(13)&mod(i*a(5)+j*a(6)+k*a(7)+l*a(8),26)==b(14)&mod(i*a(9)+j*a(10)+k*a(11)+l*a(12),26)==b(15)&mod(i*a(13)+j*a(14)+k*a(15)+l*a(16),26)==b(16)

mnop=[i,j,k,l];

end

end

end

end

A=[abcd;efgh;ijkl;mnop];

end

end

A;

End

%%%%%%%%%%%%%%%%%%%%%%%密钥求逆%%%%%%%%%%%%%%%%%%%%%%%%%

functionY=invmod(A)

D=det(A);

D=round(D);

ifgcd(D,26)~=1

disp('Error!

');

else

fori=1:

25

ifmod(i*D,26)==1

break;

end;

end;

invD=i;

Y=mod(D*inv(A)*invD,26);

end

Y=round(Y);

%%%%%%%%%%%%%%%%%%%%%破译密文%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

functionming_wen=po_yi04(mi_wen,m)

a='KE';

b='LK';

AS=miyao_qiujie04(a,b);

n=length(AS);

ming_wen=[];

w=2;

fori=1:

n

C=jie_mi(AS(:

:

i),mi_wen,m,w);

ming_wen=[ming_wen;C];

end

ming_wen=abs(ming_wen);

dlmwrite('data.txt',ming_wen,'newline','PC');

end

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2