A到Z进行搜索:Р求模逆矩阵程序:Рfunction y=invmod(p,c)Рd=det(p);Рif gcd(d,26)~=1Рend;РelseРfor i=1:25Рif mod(i*d,26)==1РbreakРend;Рend;Рid=i;Рy=mod(d*inv(p)*id,26);Рend;Рy=mod(c*y,26);Р求所有加密矩阵程序:Рfunction all()Рp=eye(2,2);Рc=eye(2,2);Рrt=eye(2,26*26);Рcount=1;Рfor i='A':'Z'Рfor j='A':'Z'Рrt(1,count)=i;Рrt(2,count)=j;Рend;Рend;Рfor i=1:26*26Рfor j=1:26*26Рp=[rt(i),rt(j)];Рif gcd(det(p),26)==1Рfor x=1:26*26Рfor y=1:26*26Рc=[rt(x),rt(y)];Рresult=invmod(p,c);РresultРend;Рend;Рend;Рend;Рend;Р解密程序:Рcol为输入的密文的对应的向量,P为所有肯能的解密矩阵,n为所有解密矩阵的个数Рfunction decryption(col,A,n)Рfor i=1:nРresult=A*colРdisp(result);Рend;Р实验小结:Р在Hill密码这个实验中,我发现一个现象,即使知道了密文和明文,有可能不能唯一确定一个加密矩阵,这在上课时是想象不到的,比如说假如明文是MOU GUO,对应的密文为QSIUYS,这是使用表10.1进行加密的,根据定理,选择的密文矩阵必须是模26可逆,然而QSIUYS对应的向量组为Р,任意两个列向量的组成的2阶方阵都不是可逆的,因此在选择字母表值时,也应该对应着明文进行选择,否则可能出现多种情况。