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

发布时间 : 星期日 文章Hill密码地加密论文设计(内含matlab程序代码)更新完毕开始阅读

实用标准文案

程序:

%%%%%%%%%%%%%%%%%%%%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

ming_wen=zimu_to_shuzi2(ming_wen); case 3

ming_wen=zimu_to_shuzi3 (ming_wen); end Z=[];

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]; end end

ming_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); end

mi_wen=mod(A*H,26); C=[]; for i=1:n/w

C=[C,mi_wen(:,i)']; end mi_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); end

mi_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_wen=zimu_to_shuzi1(mi_wen);%将密文转换相应的数字 case 2

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

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

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]; end end mi_wen=S; n=length(mi_wen); H=zeros(w,n/w); for i=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=[]; for i=1:n/w

C=[C,ming_wen(:,i)']; end

文档

实用标准文案 ming_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);%将密文转换相应的数字 end

ming_wen=char(ming_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); end switch w

case 2%二维密钥 ac=[]; bd=[]; for i=0:25 for j=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

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*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]; case 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)+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(1

文档

联系合同范文客服:xxxxx#qq.com(#替换为@)