欢迎来到天天文库
浏览记录
ID:31592807
大小:34.50 KB
页数:3页
时间:2019-01-14
《数学建模实验报告之Hill密码程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、东南大学《数学实验》报告学号09008226姓名毕斌成绩实验内容:编写Hill密码程序一实验目的编制通用的Hilln密码程序二预备知识(1)熟悉Hilln密码加密过程及实现方法(2)熟悉mod、det、inv等Matlab命令三实验内容与要求用MATLAB或C++编制通用的Hilln密码程序(包括加密、解密及破译三个环节)functionencryption%加密函数msg=input('输入要加密的明文:','s')s=2;%两个字符一组msg_len=length(msg);%字符长度col=ceil(msg_len/s);%分组数m0
2、=zeros(1,s*col);%初始化m1=double(lower(msg))-double('a')+1;m2=m1+64*(m1<0);m0(1:msg_len)=m2;m3=reshape(m0,s,col);%构造用于加密的矩阵disp('加密密钥:')K=[1,1;0,3]n=26;c1=mod(K*m3,n);%模意义下的矩阵运算c2=reshape(c1,1,s*length(c1));c3=c2-64*(c2==0);%构造输出矩阵disp('密文:')sct=char(c3+'a'-1)%输出密文3functiondecr
3、yption%解密函数sct=input('输入要解密的密文:','s')s=2;sct_len=length(sct);col=ceil(sct_len/s);c0=zeros(1,s*col);c1=double(lower(sct))-double('a')+1;c2=c1+64*(c1<0);c0(1:sct_len)=c2;c3=reshape(c0,s,col);K=[1,1;0,3];n=26;disp('解密密钥:');inv_K=invmod(K,n)%调用自定义函数求模意义下的逆矩阵m1=mod(inv_K*c3,n);
4、m2=reshape(m1,1,s*length(m1));m3=m2-64*(m2==0);msg=char(m3+'a'-1)functionmod_inv_K=invmod(K,n)%自定义函数求模意义下的逆矩阵D=det(K);ifgcd(D,n)~=1disp('Error!不存在模意义下的逆');elsefori=1:n-1ifmod(i*D,n)==1break;endendinvD=i;K_len=length(K);fori=1:K_lenforj=1:K_lenK1=K;K1(i,:)=[];K1(:,j)=[];K_sta
5、r(j,i)=(-1)^(i+j)*det(K1);endendmod_inv_K=round(mod(invD*K_star,n));end3实验结果:>>encryption输入要加密的明文:damnmsg=damn加密密钥:K=1103密文:sct=ecap>>decryption输入要解密的密文:ecapsct=ecap解密密钥:inv_K=11709msg=damn3
此文档下载收益归作者所有