1 数 模 实 验 一 实 验 内 容 : 用MATLAB 实 现 Hilln密 码 程 序 ( 包 括 加 密 、解密 及破译三个环节) 一 实 验 目的 实 现 Hilln 密 码 体 系 的 关 键 环 节 ( 加 密 、解密 、破译) 二 预备知识 熟悉 mod、det、find 等 Matlab 命令 三 实 验 内 容 与要求 ( 1)假设加 密 矩阵为 A=3201,用 MATLAB 编制程序,加 密 下面一 段明文:SHUXUEJIANMOJINGSAI 命令 结果 function hill() %输入密 钥 disp('输入密 钥(矩阵)的 维数'); n=input(''); disp('输入密 钥(矩阵,按行输入)'); key=zeros(n,n); for j=1:n for k=1:n key(j,k)=input(''); end end IXQTEOBACPQSBABUUCAA 2 d=det(key);%求 矩 阵 的 行 列 式 if d==0%判 断 矩 阵 是 否 可 逆 error('密 钥 矩 阵 不可 逆 ,无法实现 Hill 密码'); end %输入明文 message=input('输入明文 \n','s'); m=size(message); m=m(2); if mod(m,n)~=0 error('输入错误,明文长度应为矩 阵 维数的 倍数'); end for i=1:m if message(i)>='A' && message(i)<='Z' message(i)=message(i)-64; else error('输入错误,应该输入字母'); end end %加密 3 i=1; while i26 A(i)=mod(A(i),26); end A(i)=A(i)+64; end str=char(A); fprintf('密 文 为 %s',str) ( 2) 假 设 加 密 矩 阵 为A= 1103, 用 MATLAB 编 制 程 序 , 解 密 下 面 一AXSTZOSAOPBSTKSANOPSAHAUUNSUUAKGAUZCKKOPDO段密 文 : 命令 结果 function hill2() %输入密 钥 disp('输入密 钥(矩 阵 )的维数'); n=input(''); YTMHOSTCEVUEEGTC YGEVTCICPKGEPKLG HCU@NGEVSS 4 disp('输 入 密 钥 (矩 阵 ,按 行 输 入 )'); key=zeros(n,n); for j=1:n for k=1:n key(j,k)=input(' '); end end d=det(key);%求 矩 阵 的 行 列 式 if d==0%判 断 矩 阵 是 否 可 逆 error('密 钥 矩 阵 不可 逆 ,无法实现 Hill 密码'); end %输 入 密 文 message=input('输 入 密 文 \n','s'); m=size(message); m=m(2); if mod(m,n)~=0 error('输 入 错误,密...