版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Hill密码的加密,解密与破译摘要对于问题1.1:本文采用密码通信,对明文进行加密。利用已知的密钥矩阵,首先,将密文转化为对应表值数字。其次,对密文的数字转化为矩阵。最后,对明文解密。对于问题1.2:本文给出一组明文和密文 ,二者满足构成密钥的条件,通过求解的到密钥,并进行问题1.1的解题过程破译这段密文。对于问题2.1:本文给出密码矩阵A,并求出该矩阵的值是否与26互素,加以判断。若互素则能成为密钥,否则不能构成密钥。对于问题2.2:利用问题2.1所给的密码矩阵A,按照问题1.1的解题思路,将得到的密文解密。对于问题2.3:本文给出一段密码的密文和其对应的明文,通过检验二者是否满足构成密钥的
2、条件,若满足解的密钥,并写出求解过程;若不满足加以说明。对于问题3:本文给出明文频数最高的字母TH和HE,及密文频数最高的字母RH和NI。两两组合得到两组“密钥”,并检验它们是否满足构成密钥的条件,若满足则解除密钥。对于问题4:本文给出频数最高的相邻明文字母KE和相邻密文字母LK,采用密码通信,利用所给字母与其他字母组合,构造22的矩阵,并检验是否满足构成密钥的条件,加以排除得到所要的密钥。若有满足条件的矩阵,破译所给密文。对于问题5:本文采用密码通信,根据26个字母搭配出22的所有矩阵,利用矩阵的值与26互质,加以排除不符合条件的矩阵,并求出满足条件的密钥,破译该段密文,再利用密文是否通顺加
3、以排除,得到所要的明文和密钥。关键字 密钥 mod(26)逆 mod(26)倒数 一、Hill2密码的数学模型的主要符号说明w Hill密钥的维数A 密钥矩阵S 明文Y 密文m 所用的表值编号YW 哑文二、Hill2密码的数学模型Hill2密码是一种传统的密码体制加密过程的具体步骤如下: (1)、根据明文字母的表值将明文信息用数字表示,设明文信息只需要26个拼音字母AZ(也可能不止26个,如还有数字、标点符号等),通信双方给出这26个字母表值(见表10.1明文字母的表值)。 (2)、选择一个二阶可逆整数方阵A,称为Hill2密码的加密矩阵,它是这个加密体制的“密钥”(是加密的关键,仅通讯双方掌
4、握)。问题(1)已给出了这个二阶矩阵。(3)、将明文字母依次逐对分组。Hill2密码的加密矩阵为二阶矩阵,则明文字母2个一组(可以推广至Hilln密码,则每n个明文字母为一组)。若最后一组只有一个字母,则补充一个没有实际意义的哑字母,这样使每一组都由2个明文字母组成。查出每个明文字母的表值,构成一个二维列向量。 (4)、A乘以,得一新的2维列向量=A,由的两个分量反查字母表值得到的两个字母即为密文字母。 以上4步即为Hill2密码的加密过程。解密过程,即为上述过程的逆过程。1、实际问题:1.1、问题陈述甲方收到与之有秘密通信往来的乙方的一个密文信息,密文内容:W O W U Y S B A C
5、 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 按照甲方与乙方的约定,他们之间的密文通信采用密码,密钥为二阶矩阵,且汉语拼音的26个字母与0-25之间的整数建立一一对应的关系,称之为字母的表值,具体的表值见表1,问这段密文的原文是什么?1.2、问题分析:首先给出如下定义:定义 1:设为定义在集合上的 阶方阵,若存在一个定义在上的方阵,使得则称模可逆,为的 模逆矩阵,记为定义 2:设,若存在使得 ,则称为的 模倒数 或乘法逆,记作 。由于所有加密与解密过程都是在模26意义下进行的,所以要对一段明
6、文进行加密,必须使得密钥矩阵满足与26是互素的。根据程序画出流程如图如下:输入“A”密钥“密文”,“m”(所选表值)“w”(维数)判断密文长度是否能被w整除将密文转化为表值所对应的数据用哑文补充使其被w整除YesNo判断A是否在mod26下可逆加密输出结束YesNo1.3程序运行结果:Y =WOWUYSBACPGZSAVCOVKPEWCPADKPPABUJCQLYXQEZAACPP; m=1; A=1 2;0 3; YW=XYZ; S=jie_mi2(Y,A,YW,m)S =MEIGUOJIANGZAITAIPINGYANGJINXINGHAIDIHESHIYANN Y=jia_mi2(S,A
7、,YW,m) Y=WOWUYSBACPGZSAVCOVKPEWCPADKPPABUJCQLYXQEZAACPP2.1、问题陈述 甲方截获了一段密文: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 经分析这段密文是用密码编译的,且这段密码的字母UCRS一次代表字母TACO,问能否破译这段密文的内容?2.2、问题分析根据题意明文与密文存在一一对应关系:设,且存在:经过查表得到:所以,用穷举法得到满足上述等式的密钥矩阵,再进一步判断是否与26互素,若互素则可以求出在26意义下的模倒
8、数。模倒数表如下:表1a13579111517192123251921153197231151725显然,由上式所确定的密钥矩阵是惟一的,通过求解出模26意义下的密钥逆矩阵进行解密。2.3、程序运算结果 a=TACO; b=UCRS; m=1; A=qiujie_miyao(a,b,m)A = 1 1 0 3 Y=OJWPISWAZUXAUUISEABAUCRSIPLBHAAMMLPJJOTENH; YW2=XYZ; S=jie_mi2(Y,A,YW,m)S =CLINTONISGOINGTOVISITACOUNTRYINMIDDLEEASTT二、实验任务问题11.1、问题陈述在问题(2)中,
9、若已知密文的前4个字母OJWP分别代表TACO,问能否将此密文破译?不能,因为解得的密钥的行列式与26不互素,不能得到对应的模26逆矩阵。求解密钥矩阵流程图如下输入“ming_wen”,”mi_wen”,”w”,“w”,m为对应的表值,w为对维数判断密钥矩阵行列式是否为1Yes输出结束NoooooooO20561oooo1.2、运行结果 a=TACO; b=OJWP; m=1; A=qiujie_miyao(a,b,m)A = 16 724 24 D=det(A)D = 216 n=gcd(D,26)n =2问题二利用密码体制的原理,根据给定的26个英文字母的乱序表值(见表2),设计与建立密码
10、体制的加密,解密与破译框图并建立必要的计算机程序,设英文26个字母以下面的乱序表与中的整数对应:表2ABCDEFGHIJKLM523220101584182501613NOPQRSTUVWXYZ7311961224211714221192.1.1、问题陈述设,验证矩阵A能否作为密码体制的加密矩阵,用框图画出你的验算过程,并编写相应的计算机程序。2.1.2、问题分析A可用作密钥,因为其行列式值为-1,与26互素。2.1.3、运行结果编程计算得A的模26逆矩阵如下: A =invmod(A)A = 23 20 5 1 2 11 18 1 2 20 6 2525 2 22 25det(A)|A| =
11、-1.00002.2.1、问题陈述设明文为HILLCRYPTOGRAPHICSYSTEMISTRADITIONAL.利用上面的表值与加密矩阵给明文加密,并将得到的密文解密。画出加密与解密过程的框图并编写相应的计算机程序。框图如下:2.2.2、运行结果 A=8 6 9 5;6 9 5 10;5 8 4 9;10 6 11 4; 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,
12、w)S =HILLCRYPTOGRAPHICSYSTEMISTRADITIONAL2.3.1、问题陈述已知在上述给定表值下的一段密码的密文为:JCOWZLVBDVLEQMXC,对应的明文为DELAYOPERATIONSU,能否确定对应的加密矩阵?给出你的判断过程。能。232、运行结果 a=DELAYOPERATIONSU; b=JCOWZLVBDVLEQMXC; m=2; w=4; A=qiujie_miyao(a,b,m,w)A = 8 6 9 5 6 9 5 10 5 8 4 910 6 11 4问题33.1、问题重述设已知一份为密码体系,其中出现频数最高的双字母是RH和NI,而在明文语言
13、中,出现频数最高的双字母为TH和HE。由这些信息按表3给出的表值能得到什么样的加密矩阵?表3ABCDEFGHIJJKLM0123456789101112NOPQRSTUVWXYZ131415161718192021222324253.2、问题分析不能,因为两组组合解得的两个矩阵的行列式值都不与26互素,不能得到对应的模26逆矩阵。3.3、运行结果 a=THHE; b=RHNI; m=3; w=2; A=qiujie_miyao(a,b,m,w)A = 3 24 24 25 D=gcd(det(A),26)D = 1 b=NIRH; A=qiujie_miyao(a,b,m,w) b=NIRH;
14、A=qiujie_miyao(a,b,m,w)A = 11 24 9 25 D=gcd(det(A),26)D = 1问题44.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)问题55.1、问题重述
15、找出元素属于的所有可能的密码加密矩阵。若截获了如下一段密文UTCQCVFOYQUVMGMGULFOEYHDUHOPEASWXTIFBAMWT且已知它是根据表1按密码体制加密的,你能否将其解密?5.2、问题分析能,将密文通过所有可能密钥进行解密,对结果进行筛选,进行人工分析即可得出结果。程序:%加密程序%function mi_wen=ja_mi(A,ming_wen,m,w)%A为解密矩阵,m为选取参考表值类型,w维数n=length(ming_wen);switch m%将密文转换相应的数字 case 1 ming_wen=zimu_to_shuzi1(ming_wen); case 2 m
16、ing_wen=zimu_to_shuzi2(ming_wen); case 3 ming_wen=zimu_to_shuzi3 (ming_wen); endZ=;if mod(n,w)=0 S=ming_wen;else for i=1:w-mod(n,w)%判断密文长度是否能被w整除 Z(i)=ming_wen(n); S=ming_wen,Z; endendming_wen=S;n=length(ming_wen);H=zeros(w,n/w);for i=1:n/w H(:,i)=ming_wen(i*w-w+1:i*w);endmi_wen=mod(A*H,26);C=;for i
17、=1:n/w C=C,mi_wen(:,i);endmi_wen=C;switch m%将密文转换相应的数字 case 1 mi_wen=shuzi_to_zimu1(mi_wen); case 2 mi_wen=shuzi_to_zimu2(mi_wen); case 3 mi_wen=shuzi_to_zimu3(mi_wen); endmi_wen=char(mi_wen);end%解密程序%function ming_wen=jie_mi(A,mi_wen,m,w)%解密%A为解密矩阵,m为选取参考表值类型,w维数n=length(mi_wen);switch m case 1 mi_
18、wen=zimu_to_shuzi1(mi_wen);%将密文转换相应的数字 case 2 mi_wen=zimu_to_shuzi2(mi_wen);%将密文转换相应的数字 case 3 mi_wen=zimu_to_shuzi3(mi_wen);%将密文转换相应的数字 endZ=;if mod(n,w)=0 S=mi_wen;else for i=1:w-mod(n,w)%判断密文长度是否能被w整除 Z(i)=mi_wen(n); S=mi_wen,Z; endendmi_wen=S;n=length(mi_wen);H=zeros(w,n/w);for i=1:n/w H(:,i)=mi
19、_wen(i*w-w+1:i*w);endB=invmod(A);B=mod(B,26);ming_wen=mod(B*H,26);C=;for i=1:n/w C=C,ming_wen(:,i);endming_wen=C;switch m case 1 ming_wen=shuzi_to_zimu1(ming_wen);%将密文转换相应的数字 case 2 ming_wen=shuzi_to_zimu2(ming_wen);%将密文转换相应的数字 case 3 ming_wen=shuzi_to_zimu3(ming_wen);%将密文转换相应的数字 endming_wen=char(mi
20、ng_wen);end%密钥求解%function A=miyao_qiujie(a,b,m,w)%求解密钥矩阵%a为明文,b为密文,m为所选表值,w为密钥矩阵维数switch m case 1 a=zimu_to_shuzi1(a); b=zimu_to_shuzi1(b); case 2 a=zimu_to_shuzi2(a); b=zimu_to_shuzi2(b); case 3 a=zimu_to_shuzi3(a); b=zimu_to_shuzi3(b);endswitch w case 2%二维密钥 ac=; bd=; for i=0:25 for j=0:25 ifmod(i
21、*a(1)+j*a(2),26)=b(1)&mod(i*a(3)+j*a(4),26)=b(3) ac=i,j; end if mod(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; case 3%三维密钥 abc=; def=; ghi=; for i=0:25 for j=0:25 for k=0:25 if mod(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
22、*a(9),26)=b(3) abc=i,j,k; end if mod(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 if mod(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; cas
23、e 4%四维密钥 abcd=; efgh=; ijkl=; mnop=; for i=0:25 for j=0:25 for k=0:25 for l=0:25 if mod(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 if mod(i*a(1)+j*a(2)+k*a(3)
24、+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 if mod(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(
25、i*a(13)+j*a(14)+k*a(15)+l*a(16),26)=b(12) ijkl=i,j,k,l; end if mod(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; endendA;E
26、nd%密钥求逆%function Y=invmod(A)D=det(A);D=round(D);if gcd(D,26)=1 disp(Error!);else for i=1:25 if mod(i*D,26)=1 break; end; end; invD=i; Y=mod(D*inv(A)*invD,26);endY=round(Y);%破译密文%function ming_wen=po_yi04(mi_wen,m)a=KE;b=LK;AS=miyao_qiujie04(a,b);n=length(AS);ming_wen=;w=2;for i=1:n C=jie_mi(AS(:,:,i
27、),mi_wen,m,w); ming_wen=ming_wen;C;endming_wen=abs(ming_wen);dlmwrite(data.txt,ming_wen,newline,PC);end附录资料:MATLAB的30个方法1 内部常数pi 圆周率 exp(1)自然对数的底数ei 或j 虚数单位Inf或 inf 无穷大 2 数学运算符a+b 加法a-b减法a*b矩阵乘法a.*b数组乘法a/b矩阵右除ab矩阵左除a./b数组右除a.b数组左除ab 矩阵乘方a.b数组乘方-a负号 共轭转置.一般转置3 关系运算符=等于大于=大于或等于=不等于4 常用内部数学函数 指数函数exp(x
28、)以e为底数对数函数log(x)自然对数,即以e为底数的对数log10(x)常用对数,即以10为底数的对数log2(x)以2为底数的x的对数开方函数sqrt(x)表示x的算术平方根绝对值函数abs(x)表示实数的绝对值以及复数的模三角函数(自变量的单位为弧度)sin(x)正弦函数cos(x)余弦函数tan(x)正切函数cot(x)余切函数sec(x)正割函数csc(x)余割函数反三角函数 asin(x)反正弦函数acos(x)反余弦函数atan(x)反正切函数acot(x)反余切函数asec(x)反正割函数acsc(x)反余割函数双曲函数 sinh(x)双曲正弦函数cosh(x)双曲余弦函数t
29、anh(x)双曲正切函数coth(x)双曲余切函数sech(x)双曲正割函数csch(x)双曲余割函数反双曲函数 asinh(x)反双曲正弦函数acosh(x)反双曲余弦函数atanh(x)反双曲正切函数acoth(x)反双曲余切函数asech(x)反双曲正割函数acsch(x)反双曲余割函数求角度函数atan2(y,x)以坐标原点为顶点,x轴正半轴为始边,从原点到点(x,y)的射线为终边的角,其单位为弧度,范围为( , 数论函数gcd(a,b)两个整数的最大公约数lcm(a,b)两个整数的最小公倍数排列组合函数factorial(n)阶乘函数,表示n的阶乘 复数函数 real(z)实部函数i
30、mag(z)虚部函数abs(z)求复数z的模angle(z)求复数z的辐角,其范围是( , conj(z)求复数z的共轭复数求整函数与截尾函数ceil(x)表示大于或等于实数x的最小整数floor(x)表示小于或等于实数x的最大整数round(x)最接近x的整数最大、最小函数max(a,b,c,)求最大数min(a,b,c,)求最小数符号函数 sign(x)5 自定义函数-调用时:“返回值列=M文件名(参数列)”function 返回变量=函数名(输入变量) 注释说明语句段(此部分可有可无)函数体语句 6进行函数的复合运算compose(f,g) 返回值为f(g(y)compose(f,g,z
31、) 返回值为f(g(z)compose(f,g,x,.z) 返回值为f(g(z)compose(f,g,x,y,z) 返回值为f(g(z)7 因式分解syms 表达式中包含的变量 factor(表达式) 8 代数式展开syms 表达式中包含的变量 expand(表达式)9 合并同类项syms 表达式中包含的变量 collect(表达式,指定的变量)10 进行数学式化简syms 表达式中包含的变量 simplify(表达式)11 进行变量替换syms 表达式和代换式中包含的所有变量 subs(表达式,要替换的变量或式子,代换式)12 进行数学式的转换调用Maple中数学式的转换命令,调用格式如下
32、:maple(Maple的数学式转换命令) 即:maple(convert(表达式,form)将表达式转换成form的表示方式 maple(convert(表达式,form, x) 指定变量为x,将依赖于变量x的函数转换成form的表示方式(此指令仅对form为exp与sincos的转换式有用) 13 解方程solve(方程,变元) 注:方程的等号用普通的等号: = 14 解不等式调用maple中解不等式的命令即可,调用形式如下: maple(maple中解不等式的命令)具体说,包括以下五种:maple( solve(不等式)) maple( solve(不等式,变元) ) maple( so
33、lve(不等式,变元) ) maple( solve(不等式,变元) ) maple( solve(不等式,变元) )15 解不等式组调用maple中解不等式组的命令即可,调用形式如下: maple(maple中解不等式组的命令) 即:maple( solve(不等式组,变元组) )16 画图方法:先产生横坐标的取值和相应的纵坐标的取值,然后执行命令: plot(x,y) 方法2:fplot(f(x),xmin,xmax) fplot(f(x),xmin,xmax,ymin,ymax) 方法3:ezplot(f(x) ezplot(f(x) ,xmin,xmax) ezplot(f(x) ,x
34、min,xmax,ymin,ymax) 17 求极限(1)极限:syms x limit(f(x), x, a) (2)单侧极限:左极限:syms x limit(f(x), x, a,left)右极限:syms x limit(f(x), x, a,right) 18 求导数diff(f(x) diff(f(x),x) 或者:syms x diff(f(x) syms x diff(f(x), x) 19 求高阶导数 diff(f(x),n) diff(f(x),x,n)或者:syms x diff(f(x),n)syms x diff(f(x), x,n) 20 在MATLAB中没有直接求隐函数导数的命令,但是我们可以根据数学中求隐函数导数的方法,在中一步一步地进行推导;也可以自己编一个求隐函数导数的小程序;不过,最简便的方法是调用Maple中求隐函数导数的命令
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030建筑材料销售行业现状经济分析投资前景
- 2026年天津市北辰医院公开招聘事业单位工作人员备考题库完整参考答案详解
- 2026年数字藏品消费项目商业计划书
- 2025-2030建筑智能化行业市场供需分析及创新投资策略研究
- 2026年南昌健康职业技术学院校外兼职教师招聘备考题库及答案详解参考
- 2026年中国人保财险续保服务中心招聘备考题库完整答案详解
- 2026年四川工商学院化工专任教师招聘备考题库参考答案详解
- 2026年德阳什邡市马祖中心卫生院招聘护理人员备考题库及完整答案详解1套
- 2026年太仆寺旗博苑幼儿园招聘备考题库及答案详解1套
- 2026年中国电子科技集团公司第五十研究所招聘备考题库及1套完整答案详解
- 《苏教版六年级》数学上册期末总复习课件
- 上海市二级甲等综合医院评审标准(2024版)
- 油漆班组安全晨会(班前会)
- 消费类半固态电池项目可行性研究报告
- DBJ04∕T 398-2019 电动汽车充电基础设施技术标准
- 山东省济南市2024年1月高二上学期学情期末检测英语试题含解析
- 口腔门诊医疗质控培训
- (正式版)JBT 9229-2024 剪叉式升降工作平台
- HGT4134-2022 工业聚乙二醇PEG
- 小学教职工代表大会提案表
- ESC2023年心脏起搏器和心脏再同步治疗指南解读
评论
0/150
提交评论