文本串加密顾云康E01114300.docVIP

  • 15
  • 0
  • 约4.7千字
  • 约 20页
  • 2016-10-07 发布于重庆
  • 举报
文本串加密顾云康E01114300

数据结构课程设计实验报告 文本串加密 姓名:顾云康 学号:E1114300 指导老师:王爱平 日期:2013.9.17 1.课程设计的目的 (1) 熟练使用 C 语言编写程序,解决实际问题; (2) 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; (3) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; (4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 2.需求分析与概念设计 (1)掌握栈的建立,置空,进栈,出栈,了解栈的特性:栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素只能在线性表的一端进行。进行插入和删除的一端是浮动端,通常被称为栈顶,并用一个栈顶指针指示;而另一端是固定端,通常被称为栈底。 (2)通过栈的特殊性,实现进制的转换 (3)通过对储存在计算机的数据的ASCII码值进行特定的数值转换, 从而实现数据的加密 对加密后的密文按照特定的密钥进行进制转换,转换成明文 3.详细设计 a.进栈 void push(seqstack *s,int x) { if(s-top==1000-1) { printf(栈满); } else { s-top++; s-data[s-top]=x; } b.出栈 int pop(seqstack *s) { if(empty(s)) printf(栈空); else { s-top--; return(s-data[s-top+1]); } c.输入明文 void WORD(seqstack *s) { int i; printf(亲,请输入明文\n); getchar(); for(i=0;is-b;i++) { scanf(%c,s-word[i]); s-ASCII[i]=s-word[i]; //将输入的字符型强制转换为ASCII码 } d.输入密钥 void password(seqstack *s) { int i,a=0; getchar(); for(i=0;i6;i++) { scanf(%d,s-password[i]); if(s-password[i]==0||s-password[i]==1) { s-password[i]=9; } a+=s-password[i]; } s-PASSWORD=a/6; //求密钥的平均值,并取整 e.进制转换(十进制转为其他进制) void number_change(seqstack *s) { int n,i; setnull(s); n=s-n;i=s-PASSWORD; while(n) { push(s,n%i); n=n/i; } while(!empty(s)) printf(%d,pop(s)); printf( ); f.加密(将明文的ASCII转换为密文) void deciphering(seqstack *s) { int i,a,num,b; for(i=0;is-b;i++) { a=s-c[i]; num=0; b=1; while(a) { num += (a%10) * b; a /= 10; b *= s-PASSWORD; } s-d[i]=num; printf(%c,s-d[i]); } printf(\n); g.解密(将密文转换为明文) void deciphering(seqstack *s) { int i,a,num,b; for(i=0;is-b;i++) { a=s-c[i]; num=0; b=1; while(a) { num += (a%10) * b; a /= 10; b *= s-PASSWORD; //将密文看成n进制,转换为十进制(n为处理后的密钥) } s-d[i]=num; printf(%c,s-d[i]); } printf(\n);} 4.调试分析 5.程序清单 #includestdio.h #includemath.h typedef struct { int data[1000]; int

文档评论(0)

1亿VIP精品文档

相关文档