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

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

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

三、 问题求解和程序设计流程

2、1分别计算4个矩阵行列式的值为:3,22,4,21 可以判断,A1和A4能作为加密矩阵。 2、2

求倒数的程序:

function b=Hill2_countdown(a) %在mod 26情况下求倒数 % if a==1 b=1; elseif a==3 b=9; elseif a==5 b=21; elseif a==7 b=15; elseif a==9 b=3; elseif a==11 b=19; elseif a==15 b=7; elseif a==17 b=23; elseif a==19 b=11; elseif a==21 b=5; elseif a==23 b=17;

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

elseif a==25; b=25;

else error('该数在mod 26下没有倒数') end end

判断矩阵A是否为加密矩阵并求其逆矩阵:

function A1=Hill2_key(A)

%判断A矩阵是否能作为加密矩阵并求逆矩阵 a=mod(det(A),26); if a==13|rem(a,2)==0

error('A矩阵不能作为加密矩阵') end

b=Hill2_countdown(a);

A1=mod((b*[A(2,2) -A(1,2);-A(2,1) A(1,1)]),26); end

将字母转化为数字: function Y=letter_num(X)

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

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

Y=zeros(1,n); for i=1:n

if X(i)=='A' Y(i)=5; elseif X(i)=='B' Y(i)=23; elseif X(i)=='C'

- IV -

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

Y(i)=2; elseif X(i)=='D' Y(i)=20; elseif X(i)=='E' Y(i)=10; elseif X(i)=='F' Y(i)=15; elseif X(i)=='G' 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

function Y=letter_num(X)

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

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

Y=zeros(1,n); for i=1:n if X(i)=='A' Y(i)=5; elseif X(i)=='B' Y(i)=23; elseif X(i)=='C' Y(i)=2; elseif X(i)=='D' Y(i)=20; elseif X(i)=='E' Y(i)=10; elseif X(i)=='F' Y(i)=15; elseif X(i)=='G'

- VI -