资源描述:
《编写Hill密码程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、PPT3.5Hill东南大学《数学实验》报告学号姓名成绩实验内容:编写Hill密码程序一实验目的编制通用的Hilln密码程序二预备知识(1)熟悉Hilln密码加密过程及实现方法(2)这次想做个突破于是就用c#,自己完成了矩阵的诸多运算三实验内容与要求用C#编制通用的Hilln密码程序(包括加密、解密及破译三个环节)命令usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceHill{classProgram12{publicstatic
2、intSeekInverseNumber(inta,intb){inti=1,InverseNumber,k=2;int[,]SeekArray=newint[100,4];SeekArray[0,0]=a;SeekArray[0,1]=1;SeekArray[0,2]=0;SeekArray[1,0]=b;SeekArray[1,1]=0;SeekArray[1,2]=1;SeekArray[1,3]=(int)(a/b);i=2;while(SeekArray[i,0]!=1){try{SeekArray[i,0]=SeekArray[i-2,0]
3、%SeekArray[i-1,0];}catch(DivideByZeroExceptiondze){12Console.WriteLine(dze.StackTrace);}if(SeekArray[i,0]==0){for(intnotexist=0;notexist<10;notexist++)Console.WriteLine("所求的逆元不存在");break;}SeekArray[i,1]=SeekArray[i-2,1]-SeekArray[i-1,1]*SeekArray[i-1,3];SeekArray[i,2]=SeekArray[
4、i-2,2]-SeekArray[i-1,2]*SeekArray[i-1,3];try{SeekArray[i,3]=(int)(SeekArray[i-1,0]/SeekArray[i,0]);}catch(DivideByZeroExceptiondze){Console.WriteLine(dze.StackTrace);}if(SeekArray[i,0]!=1)12{i++;k++;}}if(SeekArray[k,2]>=0){InverseNumber=SeekArray[k,2];}else{InverseNumber=SeekArr
5、ay[k,2]+a;}returnInverseNumber;}publicstaticvoidswap(inta,intb){inttemp;temp=a;a=b;b=temp;}12publicstaticvoidHillCipher(int[,]EnArray,char[]EnChar){inti=0,j=0;intlen=EnChar.Length;int[]EnIntArray=newint[len];//待加密的数字串,由字符转换而来int[,]InverseArray=newint[2,2];//逆矩阵InverseArray=newin
6、t[,]{{1,0},{0,1}};int[]DoEnInt;//加密后的数字串DoEnInt=newint[EnChar.Length];char[]DoEnChar;//加密后的字符串DoEnChar=newchar[EnChar.Length];int[]DoDeInt;//解密后的数字串DoDeInt=newint[EnChar.Length];char[]DoDeChar;//解密后的字符串DoDeChar=newchar[EnChar.Length];Console.WriteLine("需要加密的字符串是:"+newstring(EnCh
7、ar));for(i=0;i8、,1]+EnIntArray[i+1]*EnArray[1,1])%26;}for(i=0;i