资源描述:
《算法论文、加密算法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、计算机算法报告学生:陈玉学号:3070942123专业:信息与计算科学07-1班传统加密—Vigenere密码算法1、算法说明:主要的算法思想来自《代数与通信》的通信应用部分,我用C++语言实现了算法,并且可以运行使用。本程序的作用是:在通信的时候,给一段明文加密,再把密文发给收信方。这是一种传统的比较简单的加密方法。2、主要的算法:收方和发方约定一个密钥为词组,比如说是:niceclay,对应的数字序列即是(13,&2,4,3,0,24)。而加密的密钥即是将它不断重复的周期序列c=(13,&2,4,
2、3,0,24)。加密方式为E(x)=x+c=y(mod26)(x是明文,E(x)为密文),而去密为D(y)=y-c=x(mod26)。例如:输入明文字符为:thiscryptosys;输出密文为:gpkwfrwcbqwbs;®・E:C++chengxvDebugjiami・exe”-
3、n
4、x输八一串明文字符,小于丄盹眈个,以结東:thiscryptosys+▲输出密文为,gpkvjf1*V/cbqzbsPressanykeytocontinue搜狗拼音半:程序如下:#include5、h>#include//该文件包含C++的输入输出操作;#include//该文件包含字符串函数;#include//该文件包含字符函数;#include//该文件包含数学函数;voidmainOcharzhifu[26]=(,a','b','c','d','e','f','g','h',1,J,k,1,m,fffffffffff99.999999n,o>p,q,r,s,t,u,v,w,X,y,z};charmingwen[
6、10000];cout«z/输入一串明文字符,小于10000个,以“+”结束:,z«endl;int1二T;while(mingwon[l]!='+'&&!<=10000){1++;cin»mingwen[1];//输入一串字符}cout<7、%7];〃每个字符加上密钥if(a[i]>=26)ming[i]=a[i]%26;//加上密钥再模26elseming[i]=a[i];j++;}cout«,z输出密文为:z,«endl;for(intt=O;t8、密算法。程序中的单链表函数来自《数据结构》课本,主要的计算二次剩余等计算方法来自《代数与通信》课本,本系统实现的功能是:将要加密的明文输入系统屮,经过系统的加密,可以得出密文,接收方收到密文以后,用解密系统解密可以得出明文。2、算法的思想:Goldwasser及Micali于1984年首先提出概率公开密钥密码系统的概念。在概率公开密钥密码系统中,发送端在加密时必需引进一随机数/},使得5二E々(m,因此,当发送端引进的不同时,对于固定的m与《而言,其所对应的密文也不相同。即相同的明文,可对应至许多不同
9、的密文。值得注意的是,概率公开密钥密码系统中,虽然一明文可对应许多密文。但在解密时,这些不同的密文在(q)=mo接收方事先并固定的解密密钥心下,都应解密为相同的明文m,即对于所有的i,不知晓事后是否知道//也不重要。发送方与接收方事先约定一秘密密钥(p,q),发送方欲将一明文Hl加密后发给接收方,他先用加密程序(附录1)加密,得出密文C,然后再发给接收方。接收方接收到密文C,用解密程序(附录2)解密,就可以得出明文。例如:运行加密程序,在窗口输入要加密的明文的字符:dayc'"E:C++程序Deb
10、ugDebuger二次余加密.exe*day$110010011000011111001选两个任意大的素数,作密钿,现在选P=23q=29作密钿,运行解密程序,在窗口输入要解密的密文:172333518635321381542接收方接到密文后,3048922262014471643022328919196602597以G,n)作公钥,y=14n=667以下为加密后的密文:****以下密文会同时输出到文本文件"filel密文”中:1?233351814