数学实验—Hill密码的加密、解密与破译(DOC) 联系客服

发布时间 : 星期五 文章数学实验—Hill密码的加密、解密与破译(DOC)更新完毕开始阅读

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

Y(i)=8; elseif X(i)=='H' Y(i)=4; elseif X(i)=='I' Y(i)=18; elseif X(i)=='J' Y(i)=25; elseif X(i)=='K' Y(i)=0; elseif X(i)=='L' Y(i)=16; elseif X(i)=='M' Y(i)=13; elseif X(i)=='N' Y(i)=7; elseif X(i)=='O' Y(i)=3; elseif X(i)=='P' Y(i)=1; elseif X(i)=='Q' Y(i)=19; elseif X(i)=='R' Y(i)=6; elseif X(i)=='S' Y(i)=12; elseif X(i)=='T' Y(i)=24; elseif X(i)=='U' Y(i)=21; elseif X(i)=='V' Y(i)=17; elseif X(i)=='W' Y(i)=14; elseif X(i)=='X' Y(i)=22; elseif X(i)=='Y'

黔南民族师范学院数学实验报告

Y(i)=11; elseif X(i)=='Z' Y(i)=9;

else error('请正确输入A到Z的字母') end end end

4、将数字转换为字母: function Y=num_letter(X)

%按照数学实验书P111表10.4将数字转化为字母 %参数说明,输入项:X由每个数字组成的行向量 % 输出项:Y由每个字母组成的字符串 %例如5 23 2 20对应的数字是A B C D %其调用格式为:Y=num_letter([5,23,2,20]).

n=length(X); if rem(X,2)~=0 X(n+1)=X(n); n=n+1; end

for i=1:n

if X(i)==5 Y(i)='A'; elseif X(i)==23 Y(i)='B'; elseif X(i)==2 Y(i)='C'; elseif X(i)==20 Y(i)='D'; elseif X(i)==10 Y(i)='E'; elseif X(i)==15 Y(i)='F'; elseif X(i)==8 Y(i)='G'; elseif X(i)==4 Y(i)='H'; elseif X(i)==18 Y(i)='I';

- VIII -

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

elseif X(i)==25 Y(i)='J'; elseif X(i)==0 Y(i)='K'; elseif X(i)==16 Y(i)='L'; elseif X(i)==13 Y(i)='M'; elseif X(i)==7 Y(i)='N'; elseif X(i)==3

Y(i)='O'; elseif X(i)==1 Y(i)='P'; elseif X(i)==19 Y(i)='Q'; elseif X(i)==6 Y(i)='R'; elseif X(i)==12 Y(i)='S'; elseif X(i)==24 Y(i)='T'; elseif X(i)==21 Y(i)='U'; elseif X(i)==17 Y(i)='V'; elseif X(i)==14 Y(i)='W'; elseif X(i)==22 Y(i)='X'; elseif X(i)==11 Y(i)='Y'; elseif X(i)==9 Y(i)='Z';

else error('请正确输入0到25的数字') end end end

将明文x按加密矩阵A进行加密:

黔南民族师范学院数学实验报告

function Y=Hill2_encrypt(x,A) %将明文x按加密矩阵A加密 %

A1=Hill2_key(A); x1=letter_num(x); n=length(x1); for i=1:2:n

x2=[x1(i);x1(i+1)]; y1=mod(A*x2,26); y(i)=y1(1); y(i+1)=y1(2); end

Y=num_letter(y); End

在MATLAB命令窗口下输入: A=[1 4;0 3];

x='HILLCRYPTOGRAPHICSYSTEMISTRADITIONAL' Y=Hill2_encrypt(x,A) Y =

TCCXKIFOEZRIZOTCTENESHNCHDKFWCICAUVX 解密:

function Y=Hill2_solution(x,A) %将密文按加密矩阵A解密 %

A1=Hill2_key(A); x1=letter_num(x); n=length(x1); for i=1:2:n

x2=[x1(i);x1(i+1)]; y1=mod(A1*x2,26); y(i)=y1(1); y(i+1)=y1(2); end

Y=num_letter(y); End

在MATLAB命令窗口下输入: A=[1 4;0 3];

x=' TCCXKIFOEZRIZOTCTENESHNCHDKFWCICAUVX '

- X -