操作系统课程设计报告加密与解密.doc
《操作系统课程设计报告加密与解密.doc》由会员分享,可在线阅读,更多相关《操作系统课程设计报告加密与解密.doc(34页珍藏版)》请在三一办公上搜索。
1、面向对象课程设计加密与解密学生姓名:;学 号:;班 级:计算机应用一班指导教师:; 2011-12-29 一实验目的二实验内容三实验算法及实验过程四源程序代码五实验总结一 实验目的1、复习、巩固C+语言的基础知识,进一步加深对C+语言的理解和掌握; 2、课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力;3、培养学生在项目开发中团队合作精神、创新意识及能力。二 实验内容 1、要求:(1).给定任意一个文本文件,进行加密,生成另一个文件。(2).对加密后的文件还原。(3).要求采用有多种
2、加密算法,对多种加密算法进行比较。(4).采用图形用户界面。三 实验算法及实现过程 1、解密与解密算法算法:(1). 希腊数学家 欧几里得算法, 称为辗转相除,又叫“辗转相除法” 简单的描述就是,记gcd(a,b)表示非负整数a,b的最大公因数,那么:gcd(a,b) =gcd(b,a%b)。 (2). Euclid算法定义:gcd(a,b)=gcd(b, a+kb) a,b,k为任意整数 即gcd(a,b)=gcd(b, a mod b) a0,b0Example:gcd(55,22)=gcd(22, 55mod22)=gcd(22,11)=11证明:假定d=gcd(a,b),那么有d|a和
3、d|b.对任何正整数b,a 可表示为如下形式: a=kb+r r mod b, a mod b =r , 因 此,有(a mod b )= a-kb,k为某个整数。但由于d|b,b也 能整除kb, 而d|a,故有d|(a mod b), 这表明d 也是b 和(a mod b) 的公因子。由于这是可逆的,如果d 是b 和(a mod b) 的公因子,那么d|kb,且d|kb+(a mod b)这等同于 d|a。这样a和b的公因子集合等同于b 和(a mod b) 的公因子集合。 2、Euclid算法流程图四 源程序代码:#include #include #include #include #i
4、nclude #include #define MAX 100#define LEN sizeof(struct slink) void sub(int aMAX,int bMAX ,int cMAX );struct slink int bignumMAX;/*bignum98用来标记正负号,1 正,0 负 bignum99来标记实际长度*/struct slink *next;/*/-建立的大数运算库-*/ void print( int aMAX ) int i; for(i=0;il2) return 1; if (l1=0;i-) if (a1ia2i) return 1 ; if
5、(a1ia2i) return -1; return 0; void mov(int aMAX,int *b) int j; for(j=0;jMAX;j+) bj=aj;return ; void mul(int a1MAX,int a2MAX,int *c) int i,j; int y; int x; int z; int w; int l1, l2; l1=a1MAX-1; l2=a2MAX-1;if (a1MAX-2=-& a2MAX-2=-) cMAX-2=0;else if (a1MAX-2=-) cMAX-2=-;else if (a2MAX-2=-) cMAX-2=-; fo
6、r(i=0;il1;i+) for(j=0;jl2;j+) x=a1i*a2j; y=x/10; z=x%10; w=i+j; cw=cw+z;cw+1=cw+1+y+cw/10;cw=cw%10; w=l1+l2;if(cw-1=0)w=w-1; cMAX-1=w; return; void add(int a1MAX,int a2MAX,int *c) int i,l1,l2; int len,tempMAX; int k=0; l1=a1MAX-1; l2=a2MAX-1;if(a1MAX-2=-)&(a2MAX-2=-) cMAX-2=-;elseif (a1MAX-2=-) mov(
7、a1,temp);tempMAX-2=0; sub(a2,temp,c); return;elseif (a2MAX-2=-)mov(a2,temp); temp98=0; sub(a1,temp,c); return;if(l1l2) len=l1;else len=l2;for(i=0;ilen) for(i=len;il1;i+) ci=(a1i+k)%10;k=(a1i+k)/10; if(k!=0) cl1=k; len=l1+1; else len=l1; elsefor(i=len;il2;i+)ci=(a2i+k)%10; k=(a2i+k)/10; if(k!=0) cl2=
8、k; len=l2+1; else len=l2; c99=len; return; void sub(int a1MAX,int a2MAX,int *c) int i,l1,l2; int len,t1MAX,t2MAX; int k=0; l1=a1MAX-1; l2=a2MAX-1; if (a1MAX-2=-) & (a2MAX-2=-) mov(a1,t1); mov(a2,t2); t1MAX-2=0; t2MAX-2=0; sub(t2,t1,c);return; elseif( a2MAX-2=-)mov(a2,t2); t2MAX-2=0; add(a1,t2,c); re
9、turn; else if (a1MAX-2=-)mov(a2,t2); t2MAX-2=-;add(a1,t2,c); return; if(cmp(a1,a2)=1) len=l2; for(i=0;ilen;i+) if (a1i-k-a2i)0) ci=(a1i-a2i-k+10)%10; k=1; else ci=(a1i-a2i-k)%10; k=0; for(i=len;il1;i+) if (a1i-k)显示为 980 如 了*/ len=l1-1; i=2; while (cl1-i=0)/*111456-111450=00006,消除 0 后变成了 6;*/ len=l1-
10、i; i+; else len=l1; elseif(cmp(a1,a2)=(-1) cMAX-2=-; len=l1; for(i=0;ilen;i+) if (a2i-k-a1i)0) ci=(a2i-a1i-k+10)%10; k=1; else ci=(a2i-a1i-k)%10; k=0; for(i=len;il2;i+) if (a2i-k)0) ci=(a2i-k+10)%10;k=1; else ci=(a2i-k)%10; k=0; if(cl2-1=0) len=l2-1; i=2; while (cl1-i=0) len=l1-i; i+; else len=l2; e
11、lse if(cmp(a1,a2)=0) len=1; clen-1=0; cMAX-1=len; return; void mod(int aMAX,int bMAX,int *c)/*/c=a mod b/注意:经检验知道此处 A 和 C 的数 组都改变了.*/ int dMAX; mov (a,d); while (cmp(d,b)!=(-1)/*/c=a-b-b-b-b-b.until(cb)*/ sub(d,b,c); mov(c,d);/*/c 复制给 a*/ return ;void divt(int tMAX,int bMAX,int *c ,int *w)/*/试商法/调用以
12、后 w 为 a mod b, C 为 a div b;*/ int a1,b1,i,j,m;/*w 用于暂时保存数据*/ int dMAX,eMAX,fMAX,gMAX,aMAX;mov(t,a); for(i=0;iMAX;i+) ei=0; for(i=0;iMAX;i+) di=0;for(i=0;i=0;i-)/*341245/3=341245-300000*1-41245-30000*1-11245-3000*3-2245-30 0*7-145-30*4=25-25-3*8=1*/ for(j=0;jMAX;j+) dj=0;di=1;dMAX-1=i+1;mov(b,g); mul
13、(g,d,e);while (cmp(a,e)!=(-1)ci+;sub(a,e,f);mov(f,a);/*f 复制给 g*/ for(j=i;jMAX;j+)/*高位清零*/ej=0; mov(a,w); if (cm=0)cMAX-1=m; else cMAX-1=m+1; return; void mulmod(int aMAX ,int bMAX ,int nMAX,int *m)/*解决 了 m=a*b mod n;*/ int cMAX,dMAX; int i; for(i=0;iMAX;i+)di=ci=0;mul(a,b,c);divt(c,n, d,m); for(i=0;
14、imMAX-1;i+) printf(%d,mmMAX-1-i-1);printf(nm length is : %d n,mMAX-1); /*接下来的重点任务是要着手解决 m=ap mod n 的函数问题.*/ void expmod(int aMAX ,int pMAX ,int nMAX,int *m)int tMAX,lMAX,tempMAX; /*/t 放入 2,l 放入 1;*/ int wMAX,sMAX,cMAX,bMAX,i;for(i=0;iMAX-1;i+) bi=li=ti=wi=0;t0=2;tMAX-1=1; l0=1;lMAX-1=1;mov(l,temp);m
15、ov(a,m);mov(p,b); while(cmp(b,l)!=0) for(i=0;iMAX;i+) wi=ci=0;divt(b,t,w,c);/*/ c=p mod 2 w=p/2*/mov(w,b);/*/p=p/2*/if(cmp(c,l)=0) /*/余数 c=1*/ for(i=0;iMAX;i+) wi=0; mul(temp,m,w); mov(w,temp); for(i=0;iMAX;i+) wi=ci=0;divt(temp,n,w,c);/* c 为余 c=temp % n,w 为商 w=temp/n */ mov(c,temp); for(i=0;iMAX;i+
16、) si=0; mul(m,m,s);/s=a*a for(i=0;iMAX;i+) ci=0; divt(s,n,w,c);/*w=s/n;c=s mod n*/ mov (c,m); for(i=0;iMAX;i+)si=0;/w= p /2mul(m,temp,s); for(i=0;iMAX;i+) ci=0; divt(s,n,w,c);mov (c,m);/*余数 s 给 m*/ mMAX-2=aMAX-2;/*为后面的汉字显示需要,用第 99 位做为标记*/ return;/*/k=temp*k%n;*/ int is_prime_san(int pMAX)int i,aMAX,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 报告 加密 解密
链接地址:https://www.31ppt.com/p-2401935.html