搜档网
当前位置:搜档网 › c语言课程设计-文件加密解密(含源代码)

c语言课程设计-文件加密解密(含源代码)

c语言课程设计-文件加密解密(含源代码)
c语言课程设计-文件加密解密(含源代码)

C

实验名称:文件加密解密

院系:软件学院

学号:

日期:2012年9月3日—9月17日

一:设计题目

1:设计图形用户界面。

2:对文件进行加密并对加密文件进行保存。

3:对加密了的文件进行解密。

二:设计过程

设计过程中遇到的困难和解决方法:

1:不能很好地理解题意(通过老师的讲解)。

2:不知道如何设计加密解密程序(通过翻阅书籍和上网查找资料)

过程:

首先通过学习老师提供的资料了解大致的设计过程并懂得运用一些以前没有学习过的c语言。先利用文本文件设计出加密解密的主要过程并能运行。知道如何运用fopen将原文件打开并用fread将原文件内容读出来,然后进行加密设计并将加密的数据用fwrite写进指定的文件中并保存。然后读出加密的文件并解密并保存。最后在写出的程序中加入图形用户界面,运用window,box,gotoxy等进行设计。

三:源代码

#include /* 标准输入、输出函数 */

#include /* 标准库函数 */

#include //*字符串处理函数 */

#include /* 字符操作函数 */

#include

#include

#define key_down 80

#define key_up 72

#define key_esc 1

#define key_enter 28

#define SIZE 1

void box(int startx,int starty,int high,int width);

int get_key();

char buf[20*20*4];

/*/////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////加密解密 */

void fun(char *list,char *sd) /*加密过程*/

{

FILE *fp1,*fp2;

char buf[1000]; /*文件临时存放处*/

register int ch;

fp1=fopen("e:\list.txt","r"); /*用可读方式打开文件*/

fp2=fopen("e:\sd.txt","w"); /*用可写方式创建一个文件*/

if(fp1==NULL)

{

printf("cannot open file\n");

exit(1);

}

if(fp2==NULL)

{

printf("cannot build file\n");

exit(1);

}

ch=fgetc(fp1); /*读出打开文件的光标处的一个字符*/

while(!feof(fp1)) /*读出的字符不是最后的字符*/

{

ch=ch<<1; /*加密方法*/

fputc(ch,fp2); /*加密的字符存放在指定的地方*/

ch=fgetc(fp1);

}

rewind(fp2); /*将光标移动到第一个字符前面*/

fread(buf,sizeof(buf),1,fp2); /*从文件的当前位置开始中读取buf中存放的数据*/

printf("%s",buf);

/*fclose(fp1);

fclose(fp2); */

}

void man(char *sd,char *ds) /*解密过程*/

{

/*int n=0; */

FILE *fp2,*fp3;

register int fh;

char buf1[1000];

fp2=fopen("e:\sd.txt","rb"); /*用可读方式打开文件*/

fp3=fopen("e:\ds.txt","wb"); /*用可写方式创建一文件*/

if(fp2==NULL)

{

printf("cannot open file\n");

exit(1);

}

if(fp3==NULL)

{

printf("cannot build file\n");

exit(1);

}

fh=fgetc(fp2); /*从光标处读出一个字符*/

while(!feof(fp2)) /*当读出的字符到达最后一个则停止*/

{

fh=fh>>1; /*解密方式*/

fputc(fh,fp3); /*解密的字符存放在指定的地方*/

fh=fgetc(fp2);

}

fread(buf1,sizeof(buf1),1,fp3); /*读出buf1中所存放的数据*/ printf("%s",buf1);

}

void main()

{ int k;

char *f[]={"jiami","jiemi"}; /**界面的形式/

int key,y;

int j,q;

char list[300];

char sd[300];

char ds[300];

char ch,fh;

char buf[1000];

char buf1[1000];

FILE *fp1;

FILE *fp2;

int l1,l2;

window(1,1,80,25);/*left,top,right,bottom,相对于屏幕的字符坐标,屏幕原点在左上角*/

gettext( 20,10,40,14,buf); /*保存矩形屏幕上的字符*/

textbackground(7); /*背景颜色*/

textcolor(0); /*字体颜色*/

clrscr(); /*清除矩形屏幕上的所有字符*/

gotoxy(24,10);/*将当前字符屏幕的光标位置移动到x,y的坐标位子*/ printf("%s",f[0]);

gotoxy(24,14);

printf("%s",f[1]);

gettext(10,8,60,16,buf);

box(22,9,3,30); /*建立一个小窗口*/

key=0;

while(1)

{ while(bioskey(1)==0); /*读取键盘值查询键盘是否按下*/ key=get_key(); /*按下了什么键盘*/

if(key==key_up||key==key_down)

{

y=wherey();/*得到字符模式下窗口光标的x坐标数值*/ if(key==key_up)

y=y==10? y+4:10; /*当y=10光标向下移动四个位置否则将光标移动到y=10处*/

if(key==key_down)

y=y==14? y-4:14; /*当y=14光标向下移动四个位置否则将光标移动到y=14处*/

puttext(10,8,60,16,buf); /*将gettext函数保存的字符恢复到屏幕上 */

gotoxy(24,y);

if(y==10)

{ textbackground(7);

textcolor(0);

box(22,9,3,30);

textbackground(3);

textcolor(15);

gotoxy(24,y);

cprintf("%s",f[0]);

}

else

{ textbackground(7);

textcolor(0);

box(22,13,3,30);

textbackground(3);

textcolor(15);

gotoxy(24,y);

cprintf("%s",f[1]); }

}

if(key==key_enter&&y==10)且光标在y=10处 /*当按下enter键且

光标在y=10处进行下步*/

{

clrscr();

textbackground(3);

textcolor(15);

/*clrscr(); */

gotoxy(24,5);

printf("input the file name for jiami\n");/*用户给需要加

密的文件加密 */

l1=strlen("input the file name for jiami:");/*待求长度的

字符串指针*/

gotoxy(24+l1,5);

scanf("%s",list);

gotoxy(24,10);

printf("input file name for save\n");/*给加密后的文件命名,

并保存*/

l2=strlen("input file name for save:");

gotoxy(24+l2,10);

scanf("%s",sd);

fun(list,sd);

fp1=fopen("e:\sd.txt","rb");

fread(buf1,sizeof(buf1),1,fp1);

gotoxy(10,15);

printf("%s\n",buf1);

getch();

printf("file haven jiami ,save now");

getche(); break;

}

if(key==key_enter&&y==14)

{

clrscr();

textbackground(3);

textcolor(15);

gotoxy(24,5);

printf("input the file name for jiemi \n");/*用户给需要解密的文件解密 */

l1=strlen("input the file name for jiemi: ");

gotoxy(24+l1,5);

scanf("%s",sd);

gotoxy(24,10);

printf("input file name for save:\n");/*对解密的文件系统又可以提供保存路径 */

l2=strlen("input file name for save: ");

gotoxy(24+l2,10);

scanf("%s",ds);

man(sd,ds);

fp2=fopen("e:\ds.txt","rb");

fread(buf1,sizeof(buf1),1,fp2);

gotoxy(10,15);

printf("%s\n",buf1);

getch();

printf("file haven jiemi,save now");

getche();

break;

}

}

window(1,1,80,25);

gettext( 20,10,40,14,buf);

textbackground(7);

textcolor(0);

clrscr();

gotoxy(24,10);

printf("%s",f[0]);

gotoxy(24,14);

printf("%s",f[1]);

gettext(10,8,60,16,buf);

box(22,9,3,30);

key=0;

while(1)

{ while(bioskey(1)==0);

key=get_key();

if(key==key_up||key==key_down)

{

y=wherey();

if(key==key_up)

y=y==10? y+4:10;

if(key==key_down)

y=y==14? y-4:14;

puttext(10,8,60,16,buf);

gotoxy(24,y);

if(y==10) /*光标在10处的窗口*/

{ textbackground(7);

textcolor(0);

box(22,9,3,30);

textbackground(3);

textcolor(15);

gotoxy(24,y);

cprintf("%s",f[0]);

}

else

{ textbackground(7);

textcolor(0);

box(22,13,3,30);

textbackground(3);

textcolor(15);

gotoxy(24,y);

cprintf("%s",f[1]); }

}

if(key==key_enter&&y==10)

{

clrscr();

textbackground(3);

textcolor(15);

/*clrscr(); */

gotoxy(24,5);

printf("input the file name for jiami\n");/*用户给需要加密的文件加密 */

l1=strlen("input the file name for jiami:");

gotoxy(24+l1,5);

scanf("%s",list);

gotoxy(24,10);

printf("input file name for save\n");/*给加密后的文件命名,并保存*/

l2=strlen("input file name for save:");

gotoxy(24+l2,10);

scanf("%s",sd);

fun(list,sd);

fp1=fopen("e:\sd.txt","rb");

fread(buf1,sizeof(buf1),1,fp1);

gotoxy(10,15);

printf("%s\n",buf1);

getch();

printf("file haven jiami ,save now");

getche();

}

if(key==key_enter&&y==14)

{

clrscr();

textbackground(3);

textcolor(15);

gotoxy(24,5);

printf("input the file name for jiemi \n");/*用户给需要解密的文件解密 */

l1=strlen("input the file name for jiemi: ");

gotoxy(24+l1,5);

scanf("%s",sd);

gotoxy(24,10);

printf("input file name for save:\n");/*对解密的文件系统又可以提供保存路径 */

l2=strlen("input file name for save: ");

gotoxy(24+l2,10);

scanf("%s",ds);

man(sd,ds);

fp2=fopen("e:\ds.txt","rb");

fread(buf1,sizeof(buf1),1,fp2);

gotoxy(10,15);

printf("%s\n",buf1);

getch();

printf("file haven jiemi,save now");

getche();

break;

}

}

}

int get_key()

{

union REGS rg;

rg.h.ah=0;

int86(0x16,&rg,&rg);

return rg.h.ah;

getchar();

}

void box(int startx,int starty,int high,int width) /*屏幕的建立*/

{

int i;

gotoxy(startx,starty);

putch(0xda);

for (i=startx+1;i

putch(0xc4);

putch(0xbf);

for(i=starty+1;i

{

gotoxy(startx,i);

putch(0xb3);

gotoxy(width,i);

putch(0xb3);

}

gotoxy(startx,starty+high-1);

putch(0xc0);

gotoxy(startx+1,starty+high-1);

for(i=startx+1;i

putch(0xc4);

putch(0xd9);

return;

}

四:心得体会

通过这次的作业我觉得最大的收获是不仅把平时学习到的知识理解的更加透彻,而且使知识更加系统化,同时还把有些平时不太注意的小问题发现了出来,这不但有利于我学习C语言,而且对于我学习任何一门课程都是很有益处的。总之,做这份作业对于我们学习C语言有很大的帮助。

在做课程设计时,由于运用了很多新知识,新的方法,还有题目更加复杂,应用性更强,在编写过程中遇到了很多困难,从而使自己能够学习到更多以前不懂,难懂的东西。

文件加密与解密—Java课程设计报告

JAVA课程设计题目:文件的加密与解密 姓名: 学号: 班级: 日期:

目录 一、设计思路 (3) 二、具体实现 (3) 三、运行调试与分析讨论 (8) 四、设计体会与小结 (11) 五、参考文献 (12) 六、附录 (12)

一、设计思路 自从Java技术出现以业,有关Java平台的安全性用由Java技术发展所引发的安全性问题,引起了越来越多的关注。目前,Java已经大量应用于各个领域,研究Java的安全性对于更好地利用Java具有深远的意义。使用Java的安全机制设计和实现安全系统更具有重要的应用价值。 本课程设计,主要实践Java安全中的JCE模块,包括密钥生成,Cipher对象初始化、加密模式、填充模式、底层算法参数传递,也涉及文件读写与对象输入输出流。 二、具体实现 本系统通过用户界面接收三个参数:明文文件、密文文件、口令。采用DES加密算法,密码分组链(Cipher Block Chaining,CBC)加密模式,PKCS#5-Padding的分组填充算法。因为CBC涉及到底层算法参数的解密密钥的传递,所以将明文文件中的字节块以密封对象(Sealed Object)的方式加密后,用对象流输出到密文文件,这样就将密文、算法参数、解密密钥三都密封到一个对象中了。口令的hash值作为产生密钥的参数。设计流程图如下所示: 文件加密与解密设计流程图

本系统中,包含Default,Shares,SecretKey,EncAndDec四个包共6个类组成。定义的几个参数:MAX_BUF_SIZE为每次从文件中读取的字节数,也是内存缓冲区的大小;加密算法为DES;加密模式是密码分组链(CBC)模式;分组填充方式是PKCS#5Padding。包和类结构图如下所示: 本课程设计,包和类结构图: 以下为包中的类的方法实现说明 Package Shares类结构图

RSA加密算法_源代码__C语言实现

RSA算法 1978年就出现了这种算法,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。 RSA的安全性依赖于大数难于分解这一特点。公钥和私钥都是两个大素数(大于100个十进制位)的函数。据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积。 密钥对的产生。选择两个大素数,p 和q 。计算:n = p * q 然后随机选择加密密钥e,要求e 和( p - 1 ) * ( q - 1 )互质。最后,利用Euclid 算法计算解密密钥d, 满足e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )其中n和d也要互质。数e和n是公钥,d是私钥。两个素数p和q 不再需要,应该丢弃,不要让任何人知道。加密信息m(二进制表示)时,首先把m分成等长数据块m1 ,m2,..., mi ,块长s,其中2^s <= n, s 尽可能的大。对应的密文是:ci = mi^e ( mod n ) ( a ) 解密时作如下计算:mi = ci^d ( mod n ) ( b ) RSA 可用于数字签名,方案是用( a ) 式签名,( b )式验证。具体操作时考虑到安全性和m信息量较大等因素,一般是先作HASH 运算。RSA 的安全性。RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA 就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前,RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解140多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定。 由于进行的都是大数计算,使得RSA最快的情况也比DES慢上100倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。 */ #include #include #include

加密解密课程设计

兰州商学院陇桥学院工学系课程设计报告 课程名称: Java 设计题目:加密与解密 系别:工学系 专业 (方向):信息管理与信息系统 年级、班:2012级(2)班 学生姓名:费亚芬 学生学号: 208

指导教师:张鑫 2014年7 月 1日 目录 一、系统开发的背景................................. 错误!未定义书签。 二、系统分析与设计................................. 错误!未定义书签。(一)............................................. 系统功能要求错误!未定义书签。(二)......................................... 系统模块结构设计错误!未定义书签。 三、系统的设计与实现............................... 错误!未定义书签。(一)图形用户界面模块 ........................... 错误!未定义书签。(二)加密操作模块 ............................... 错误!未定义书签。 (三)解密操作模块................................ 错误!未定义书签。(四)文件保存模块 ............................... 错误!未定义书签。

(五)文件选择模块 ............................... 错误!未定义书签。 四、系统测试....................................... 错误!未定义书签。(一)测试加密..................................... 错误!未定义书签。(二)测试选择加密文件............................. 错误!未定义书签。(三)测试生成加密文件............................. 错误!未定义书签。(四)测试浏览加密文件............................. 错误!未定义书签。(五)测试解密文件................................. 错误!未定义书签。 五、总结........................................... 错误!未定义书签。 六、附件(代码、部分图表) ......................... 错误!未定义书签。

RC4加密算法C语言实现

RC4 加密算法 C 语言实现 代码文件名 RC4.cpp Encrypt.h (代码详见后文) 备注:将以上两个文件放在相同的路径(建议不要放在中文路径 下)编译执行!编译环境 Microsoft Visual C++ 6.0 C-Free 5.0 代码解释 RC4 加密算法是大名鼎鼎的RSA 三人组中的头号人物Ron Rivest 在1987 年设计的密钥长度可变的流加密算法簇。之所以称其为簇,是由于其核心部分的S-box 长度可为任意,但一般为256字节。该算法的速度可以达到DES 加密的10倍左右。 RC4 算法的原理很简单,包括初始化算法和伪随机子密码生成算法两大部分。假设S-box 长度和密钥长度均为为n。先来看看算法的初始化部分(用类C伪代码表示): for (i=0; i

} 得到的子密码sub_k用以和明文进行xor运算,得到密文,解密过程也完全相同。 RC4加密算法在C++中的实现: RC4函数(加密/解密):其实RC4只有加密,将密文再加密一次,就是解密了。 GetKey函数:随机字符串产生器。 ByteToHex函数:把字节码转为十六进制码,一个字节两个十六进制。十六进制字符串非常适合在HTTP中传输。 HexToByte函数:把十六进制字符串,转为字节码。。 Encrypt函数:把字符串经RC4加密后,再把密文转为十六进制字符串返回,可直接用于传输。 Decrypt函数:直接密码十六进制字符串密文,再解密,返回字符串明文。 源代码 以下为Encrypt.h文件代码 #ifndef _ENCRYPT_RC4_ #defi ne _ENCRYPT_RC4_ #in clude #defi ne BOX_LEN 256 int GetKey(c onst un sig ned char* pass, int pass_le n, un sig ned char *out); int RC4(c onst un sig ned char* data, int data_le n, const un sig ned char* key, int key_le n, un sig ned char* out, i nt* out_le n); static void swap_byte( un sig ned char* a, un sig ned char* b); char* En crypt(co nst char* szSource, const char* szPassWord); // 加密,返回加密结果 char* Decrypt(co nst char* szSource, con st char* szPassWord); // 解密,返回解密结果 char* ByteToHex(c onst un sig ned char* vByte, const int vLe n); // 把字节码pbBuffer转为十六进制字符串,方便传输 unsigned char* HexToByte(const char* szHex); // 把十六进制字符串转为字节码pbBuffer,解码 #e ndif // #ifndef _ENCRYPT_RC4_

密码学课程方案AES加密解密文档

个人资料整理仅限学习使用 成都信息工程学院课程设计报告 AES加密解密的实现 课程名称:应用密码算法程序设计 学生姓名: 学生学号: 专业班级: 任课教师: 年月日

个人资料整理仅限学习使用 附件:课程设计成绩评价表

个人资料整理仅限学习使用目录

1.背景 AES,密码学中的高级加密标准

java文件加密解密课程设计

软件学院 课程设计报告书 课程名称面向对象程序设计 设计题目文本文档的加密与解密 专业班级财升本12-1班 学号 1220970120 姓名王微微 指导教师徐娇月 2013年 1 月

1 设计时间 2013年1月14日-2013年1月18日 2 设计目的 面向对象程序设计是一门实践性很强的计算机专业基础课程。通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。 3 设计任务 对文件进行加密解密 4 设计内容 4.1 需求分析 (1)给定任意一个文本文件,进行加密,生成另一个文件。 (2)对加密后的文件还原。 4.2 总体设计 4.2.1 包的描述 导入了java.awt; java.awt.event; java.io; javax.swing等包。 4.2.2 类的描述 Myframe类;E1类。其中Myframe类继承Frame类;可以扩展Frame的功能并且可以实例化的多种功能,这个类也实现了ActionListener这个接口,它是Java中关于事件处理的一个接口,ActionListener用于接收操作事件的侦听器接口。对处理操作事件感兴趣的类可以实现此接口,而使用该类创建的对象可使用组件的addActionListener 方法向该组件注册。在发生操作事件时,调用该对象的actionPerformed 方法。 4.3 页面设计

图4.3-1 显示页面 代码实现: addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } });

DES加密解密课程设计报告

D E S加密解密课程设计报 告 Prepared on 22 November 2020

成都信息工程学院课程设计报告 DES算法加密与解密的设计与实现课程名称:密码算法程序设计 学生姓名: 学生学号: 专业班级: 任课教师: XX年 XX 月 XX 日

目录

1背景 DES算法概述 DES(Data Encryption Standard)是由美国IBM公司于20世纪70年代中期的一个密码算(LUCIFER)发展而来,在1977年1月15日,美国国家标准局正式公布实施,并得到了ISO的认可,在过去的20多年时间里,DES被广泛应用于美国联邦和各种商业信息的保密工作中,经受住了各种密码分析和攻击,有很好的安全性。然而,目前DES算法已经被更为安全的Rijndael算法取代,但是DES加密算法还没有被彻底的破解掉,仍是目前使用最为普遍的对称密码算法。所以对DES的研究还有很大价值,在国内DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键的数据保密,如信用卡持卡人的PIN 码加密传输,IC卡与POS机之间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。 DES算法是一种采用传统的代替和置换操作加密的分组密码,明文以64比特为分组,密钥长度为64比特,有效密钥长度是56比特,其中加密密钥有8比特是奇偶校验,DES的加密和解密用的是同一算法,它的安全性依赖于所用的密钥。它首先把需要加密的明文划分为每64比特的二进制的数据块,用56比特有效密钥对64比特二进制数据块进行加密,每次加密可对64比特的明文输入进行16轮的替换和移位后,输出完全不同的64比特密文数据。由于DES算法仅使用最大为64比特的标准算法和逻辑运算,运算速

(完整word版)电子系c语言程序设计加密解密

课程设计报告 课程设计名称: C语言程序设计 指导教师: 学生: 学号: 学院:电子信息工程学院 完成时间: 2011年9月27日 嘉应学院电子信息工程学院 1

C语言课程设计说明书 目录 1 需求分析 (1) 2总体设计 (2) 3详细设计 (3) 3.1 换位加密流程图 (3) 3.2 换位解密流程图 (4) 3.3 替代加密流程图 (5) 3.4 替代解密流程图 (6) 4调试与测试 (8) 5测试结果 (8) 6附录 (11) I

1 需求分析 问题描述(实验指导书中已经给出) ①数据的输入和输出;要求使用文件操作。文件(明文,仅限于英文字母)存放在某一已知文本文件中,加密后的文件(密文)存放在另一文件中。 ②换位加密和解密: 加密:根据密钥(即移位位数,用户从键盘输入)将对应字符进行移位操作,输出密文;解密:输入密文后再输入移位位数则可输出明文; ③凯撒加密和解密: 加密:根据密钥(即移位位数,用户从键盘输入)将对应字符进行移位操作,输出密文;解密:输入密文后再输入移位位数则可输出明文; ④统计单词的个数; ⑤退出。

2总体设计 (程序设计总流程图,可以画带流程线的流程图) 此处只需要写出一个流程图就可以了,就是总的那个流程图,请规范的画图。不需要分出2.1和2.2. 开始 welcome() caidan() transpen( ); transpde( ) caesaren( ) caesarde() mingwent miwentongji(byebye()

3详细设计 (各模块功能说明,如函数功能、入口及出口参数说明,函数调用关系描述等 这块大家问题最多了,这里不是写程序代码,而是写流程图里面各个主要函数的作用,函数之间关系的说明。 以第1题为例,此处应为: 3.1 换位加密流程图 流程图 (对流程图加以说明。可以把关键语句放在此处,加以注释说明) 建立mingwen.txt 和miwen.txt 文件 输入密钥n 输入明文到数组r k=strlen(r)j 计算数组r 长度 for i=0 to k 关闭并保存mingwen.txt 文件 打开mingwen.txt 文件 space(h,r) 将明文去空格并放到数组h 中 m=strlen(h) 计算数组h 长度 m%n==0 是 否 hang=m/n hang=m/n+1 j=0 for i=0 to hang for i=m to hang*n z=0 fputc(r[i],mingwen) 将明文存放到mingwen.txt 文件中 for j=0 to n h[i]='a'+j j++ for i=0 to hang zl[i][j]=h[z] z++ for j=o to n zl[i][j]=h[z] z++

文件加密系统课程设计

仲恺农业工程学院课程设计 文件加密 姓名孙浩斌 院(系)信息科学与技术学院 专业年级计算机132 学号 指导教师罗慧慧 职称学生 起止时间2015-6-15至2015-6-24 仲恺农业工程学院教务处制 目录

一.课程设计目的和要求 设计目的 有时我们有些资料不希望别人看到,最常用的方法就是加密。对给定的相关文件进行加密可以对文件进行保护,可以防止某些重要信息不被别人所知道甚至窃取。对文件起到保护作用,可以方便用户使用某些只有自己能知道的信息,能够安全保护文件的相关内容几信息不被外流。随着信息社会的到来,人们在享受信息资源所带来的巨大的利益的同时,也面临着信息安全的严峻考验。信息安全已经成为世界性的现实问题,信息安全问题已威胁到国家的政治、经济、军事、文化、意识形态等领域,同时,信息安全问题也是人们能否保护自己的个人隐私的关键。信息安全是社会稳定安全的必要前提条件。通过课程设计,使学生了解高级程序设计语言的结构,逐渐培养学生的编程能力、用计算机解决实际问题的能力,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。 程序设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试程序及编写设计报告。

本课程设计的目标: 1. 巩固《高级语言程序设计》课程学习的内容和加深学生对基本知识的理解和掌握。 2. 掌握编程和程序调试的基本技能。 3. 掌握软件设计的方法。 4. 提高运用程序设计解决实际问题的能力。 5. 培养独立思考、综合运用所学有关相应知识的能力。 6. 强化上机动手编程能力,闯过理论与实践相结合的难关! 设计要求 1. 分析课程设计题目的要求,根据所要求的程序功能,画出程序的流程图。 2.对系统功能模块进行分析,写出详细设计说明文档。 3.对程序源代码进行调试与测试,使其能正确运行。 4.设计完成的软件要便于操作和使用。 5.设计完成后提交课程设计报告。 设计意义 至今,密码技术是取得信息安全性最有效的一种方法, 密码技术是信息安全的核心技术。通过数据加密,人们可以有效地保证通信线路上的内容不被泄露,而且还可以检验传送信息的完整性。进一步,密码技术可以应用于数字签名、身份认证和信息鉴定,这些应用对于资源存取控制以及其它安全措施是必须而且有效的。相对于防病毒软件和防火墙软件来说,基于密码技术密码类产品、认证类产品份额相对较小,但随着金融、电信、政府等行业信息化建设对于网络安全整体解决方案需求的增加,将会有较大的增长。

C语言实现文件的des加解密实例

C语言实现文件的des加解密实例 c语言中的正则 ,d3.js画矢量图+可拖拽的实现思路 DOM2级事件处理程序跨浏览器兼容事件 ,exel导入/导出和csv文件导入、导出 ,Go http访问使用代理 golang进行socket通讯 ,hessian+hibernate 懒加载处理 ,HTML+CSS代码橙色导航菜单html5 撞球游戏 // get 网络请求 func Get(api string,params .Values)(rs[]byte ,err error){ var *. ,err=.Parse(api) if err!=nil{ fmt.Printf("解析错误:\r\n%v",err) return nil,err } //如果参数中有中文参数,这个方法会进行Encode //iOS KVO注册和监听方法 //C语言websocket编程 .RawQuery=params.Encode() resp,err:=http.Get(.String()) if err!=nil{ fmt.Println("err:",err) return nil,err } defer resp.Body.Close() return ioutil.ReadAll(resp.Body) } // post 网络请求 ,params 是.Values类型 func Post(api string, params .Values)(rs[]byte,err error){ resp,err:=http.PostForm(api, params) if err!=nil{ return nil ,err } defer resp.Body.Close() return ioutil.ReadAll(resp.Body) } //代码描述:基于GO的黄金数据接口调用代码实例 //关联数据:黄金数据 //css之before and after [代码] [C#]代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using https://www.sodocs.net/doc/4e1623426.html,;

DES加密解密课程设计报告

D E S加密解密课程设计 报告 标准化工作室编码[XX968T-XX89628-XJ668-XT689N]

成都信息工程学院课程设计报告 DES算法加密与解密的设计与实现课程名称:密码算法程序设计 学生姓名: 学生学号: 专业班级: 任课教师: XX年 XX 月 XX 日

1背景 1.1 DES算法概述 DES(Data Encryption Standard)是由美国IBM公司于20世纪70年代中期的一个密码算(LUCIFER)发展而来,在1977年1月15日,美国国家标准局正式公布实施,并得到了ISO的认可,在过去的20多年时间里,DES被广泛应用于美国联邦和各种商业信息的保密工作中,经受住了各种密码分析和攻击,有很好的安全性。然而,目前DES算法已经被更为安全的Rijndael算法取代,但是DES加密算法还没有被彻底的破解掉,仍是目前使用最为普遍的对称密码算法。所以对DES的研究还有很大价值,在国内DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键的数据保密,如信用卡持卡人的PIN码加密传输,IC卡与POS机之间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。 DES算法是一种采用传统的代替和置换操作加密的分组密码,明文以64比特为分组,密钥长度为64比特,有效密钥长度是56比特,其中加密密钥有8比特是奇偶校验,DES的加密和解密用的是同一算法,它的安全性依赖于所用的密钥。它首先把需要加密的明文划分为每64比特的二进制的数据块,用56比特有效密钥对64比特二进制数据块进行加密,每次加密可对64比特的明文输入进行16轮的替换和移位后,输出完全不同的64比特密文数据。由于DES算法仅使用最大为64比特的标准算法和逻辑运算,运算速度快,密钥容易产生,适合于在大多数计算机上用软件快速实现,同样也适合于在专用芯片上实现。 1.2 DES算法描述 DES算法的加密过程首先对明文分组进行操作,需要加密的明文分组固定为64比特的块。图1-1是DES加密算法的加密流程。图1-2是密钥扩展处理过程。 图1-1DES加密算法流程 图1-2子密钥产生流程 2系统设计 2.1系统主要目标 (1)用C++设计一个DES加密/解密软件系统; (2)完成一个明文分组的加解密,明文和密钥是ASCII码,长度都为8个字符,输入明文和密钥,输出密文,进行加密后,能够进行正确的解密; (3)程序运行时,要求输出第15、16轮的密钥,以及第15、16轮加密或解密之后的值,16进制表示; (4)程序有良好的人机交互操作; (5)要求从两个文件分别读取明文和密钥,并在程序中输出明文及密钥; (6)要求提供所设计系统的报告及完整的软件。 2.2系统运行环境

RSA加解密算法C语言的实现

#include #include #include #include #include #include #define MAX 100 #define LEN sizeof(struct slink) void sub(int a[MAX],int b[MAX] ,int c[MAX] ); struct slink { int bignum[MAX]; /*bignum[98]用来标记正负号,1正,0负bignum[99]来标记实际长度*/ struct slink *next; }; /*/--------------------------------------自己建立的大数运算库-------------------------------------*/ void print( int a[MAX] ) { int i; for(i=0;il2) return 1; if (l1=0;i--) { if (a1[i]>a2[i]) return 1 ; if (a1[i]

加密解密课程设计

兰州商学院陇桥学院 工学系课程设计报告 课程名称: Java 设计题目:加密与解密 系别:工学系 专业 (方向):信息管理与信息系统 年级、班:2012级(2)班 学生姓名:费亚芬 学生学号:20120651208 指导教师:张鑫 2014年7 月1日

目录 一、系统开发的背景 (1) 二、系统分析与设计 (1) (一)系统功能要求 (1) (二)系统模块结构设计 (2) 三、系统的设计与实现 (2) (一)图形用户界面模块 (2) (二)加密操作模块 (3) (三)解密操作模块 (4) (四)文件保存模块 (4) (五)文件选择模块 (5) 四、系统测试 (6) (一)测试加密 (6) (二)测试选择加密文件 (6) (三)测试生成加密文件 (6) (四)测试浏览加密文件 (7) (五)测试解密文件 (8) 五、总结 (8) 六、附件(代码、部分图表) (10)

加密与解密 一、系统开发的背景 随着网络技术的不断发展,人们的个人信息、网络间的文件传递、电子商务等方面都需要大力的保护,文件加密技术也就随之产生。文件的加密主要是由加密算法实现,加密算法有多种,本程序设计对文件的加密使用的是最基础的异或加密算法。 Java语言具有简单、安全、可移植、面向对象、健壮、多线程、体系结构中立、解释执行、高性能、分布式和动态等主要特点。本程序充分利用Java语言的特点,针对当下社会比较重视的文件加密,设计了本程序。使用本程序可以对txt,word等多种文件进行加密解密,使用便捷实用,功能完善,满足了用户对文件安全性的需求。 二、系统分析与设计 (一)系统功能要求 可以采用图形用户界面,给定任意一个文本文件,进行加密,生成另一个文件,然后对加密后的文件还原。 1、向图形用户界面中添加组件; 2、设置各个组件的布局; 3、添加窗口事件; 4、查找读入及写入文件,并显示; 5、加密功能实现; 6、解密功能实现;

文本文档的加密与解密课程设计说明书

******************* 实践教学 ******************* 理工大学 计算机与通信学院 2014年春季学期 工程开发综合训练课程设计 题目:文本文档的加密与解密 专业班级:计算机科学与技术11级4班 姓名:有刚 学号: 11240417 指导教师:树群 成绩:

目录 摘要 (1) 1.问题描述 (2) 2.系统设计 (3) 3.系统实现 (4) 4.系统测试 (8) 5.总结 (13) 参考文献 (14)

摘要 随着网络技术的不断发展,人们的个人信息、网络间的文件传递、电子商务等方面都需要大力的保护,文件加密技术也就随之产生。文件的加密主要是由加密算法实现,加密算法有多种,常见的有RSA、DES、MD5等。但是这些算法虽然原理简单,但具体实现起来却非常繁琐复杂,故而本程序设计对文件的加密使用的是最基础的异或加密算法。 Java语言具有简单、安全、可移植、面向对象、健壮、多线程、体系结构中立、解释执行、高性能、分布式和动态等主要特点。Java是一门很优秀的编程语言,是目前软件设计中极为健壮的编程语言。Java不仅可以用来开发大型的应用程序,而且特别适合于Internet的应用开发。Java确实具备了“一次写成,处处运行”的特点,所以,Java已经成为网络时代最重要的编程语言之一。本程序充分利用Java语言的特点,针对当下社会比较重视的文件加密,设计了本程序。 使用本程序可以对txt,word等多种文件进行加密解密,使用便捷实用,功能完善, 满足了用户对文件安全性的需求。 关键词: JAVA ,加密,解密

1.问题描述 本设计要求学生开发一个在Windows操作系统下,利用DES加密算法,开发出一款能够对文本信息进行加密与解密的软件。通过对文本信息特点的分析,设计出相应的DES加密算法,同时,根据DES加密过程设计出解密算法,画出相应的流程图,实现对文本文件的加密和解密,写出软件说明书,并提出日后的升级维护意见。 此外,学生通过该题目的设计过程,可以初步应用软件系统的开发原理和开发方法,全面培养软件开发过程中的分析、设计、编码、测试及文档规书写的能力,得到软件工程的训练,提高解决实际问题的能力。 (1)用图形用户界面实现软件界面,整体布局合理,美观大方。 (2)用56位秘钥对文本进行加解密。 (3)能够对一般的文本文件包括扩展名为doc和txt的文件进行直接加解密。(4)能够实现对中英文文本的加解密。 (5)系统的开发可以采用Java或C++等编程语言来实现; (6)在基本要求达到后,可进行创新设计,如改善算法性能、友好的人机界面。

c语言课程设计-文件加密解密(含源代码)

C 语 言 课 程 设 计 实 验 报 告 实验名称:文件加密解密 院系:软件学院 学号: 日期:2012年9月3日—9月17日

一:设计题目 1:设计图形用户界面。 2:对文件进行加密并对加密文件进行保存。 3:对加密了的文件进行解密。 二:设计过程 设计过程中遇到的困难和解决方法: 1:不能很好地理解题意(通过老师的讲解)。 2:不知道如何设计加密解密程序(通过翻阅书籍和上网查找资料) 过程: 首先通过学习老师提供的资料了解大致的设计过程并懂得运用一些以前没有学习过的c语言。先利用文本文件设计出加密解密的主要过程并能运行。知道如何运用fopen将原文件打开并用fread将原文件内容读出来,然后进行加密设计并将加密的数据用fwrite写进指定的文件中并保存。然后读出加密的文件并解密并保存。最后在写出的程序中加入图形用户界面,运用window,box,gotoxy等进行设计。 三:源代码 #include /* 标准输入、输出函数 */ #include /* 标准库函数 */ #include //*字符串处理函数 */ #include /* 字符操作函数 */ #include #include #define key_down 80 #define key_up 72

#define key_esc 1 #define key_enter 28 #define SIZE 1 void box(int startx,int starty,int high,int width); int get_key(); char buf[20*20*4]; /*///////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////加密解密 */ void fun(char *list,char *sd) /*加密过程*/ { FILE *fp1,*fp2; char buf[1000]; /*文件临时存放处*/ register int ch; fp1=fopen("e:\list.txt","r"); /*用可读方式打开文件*/ fp2=fopen("e:\sd.txt","w"); /*用可写方式创建一个文件*/ if(fp1==NULL) { printf("cannot open file\n"); exit(1); } if(fp2==NULL) { printf("cannot build file\n"); exit(1); } ch=fgetc(fp1); /*读出打开文件的光标处的一个字符*/ while(!feof(fp1)) /*读出的字符不是最后的字符*/ { ch=ch<<1; /*加密方法*/ fputc(ch,fp2); /*加密的字符存放在指定的地方*/ ch=fgetc(fp1); } rewind(fp2); /*将光标移动到第一个字符前面*/ fread(buf,sizeof(buf),1,fp2); /*从文件的当前位置开始中读取buf中存放的数据*/ printf("%s",buf); /*fclose(fp1); fclose(fp2); */ }

C语言加密解密课程设计报告

大学课程设计 文件的加密解密— 单位数理系分院(系) 专业应用物理 ) 学号 学生姓名 指导教师 完成日期 2010 年 9 月 17日

摘要 } 进行程序的加密解密是现在对文件保护的一种重要措施。传统的文件保护方法只是对文件进行封存。随着计算机和网络技术的迅速发展,越来越多的人意识到文件加密的重要性,而采用一定的程序对文件进行加密正是现在人们对文件保护的一种必要手段。 文件加密技术是通过相应程序对文件进行加密,它有许多优点,例如:可以对任意文本文档进行不同种类的加密,对原文件不造成破坏,同时可以将加密后的文件保存起来用于传输。程序灵活性强,可以随时进行加密解密。用户可以根据需要使程序完成相应功能。 本文采用C程序,实现了所述功能中的全部内容。 论文首先介绍了程序的设计思路,其中包括相应的流程图。其次,介绍了函数的主要功能。最后,利用C语言环境编辑程序实现了全部功能,并作了详细描述。 关键词:文件加密,功能,文件,C程序。

目录 … 第1章选题的意义…………………………………………………………………………… 错误!未定义书签。 文件加密的意义……………………………………………………………………错误!未定义书签。 设计程序的意义…………………………………………………………………错误! 未定义书签。 第2章系统功能需求分析…………………………………………………………………… 错误!未定义书签。 系统的基本要求…………………………………………………………………错误! 未定义书签。 功能设计…………………………………………………………………………错误! 未定义书签。 第3章系统设计……………………………………………………………………………… 错误!未定义书签。 设计思路 (6) 【 程序模块 (7) 功能图 (7) 函数分析 (11) 第4章系统实现……………………………………………………………………………… 错误!未定义书签。 第5章总结…………………………………………………………………………………… 错误!未定义书签。

java文件加密课程设计

结业报告 课程名称:网络安全技术 设计题目:java实现文件加密 系别:***学院 专业:*************** 组员:**************************起止日期***************** 指导教师:***

摘要 目前世界范围内的信息安全问题越来越严重。解决信息安全问题涉及面很广,它包括技术,管理.制度,人员和法律等诸多方面,但最核心部分是密码技术。密码技术是实现一种变换,它使得对大量信息的保护变为对少量密钥的保护。 本次结业设计以文件的加密与解密问题为主要研究讨论方向。先对加密技术进行查找资料。然后对加密方法进行概述,而后对3DES加密进行详细介绍何分析,并对结业设计成果进行演示,最后附上代码。由于本次结业设计时间仓促外加能力有限,有诸多不足之处以及可能存在某些为发现错误还请批评指正。感谢之至。 关键词:加密解密密钥 3DES Abstract At present, the problem of information security is more and more serious in the world. To solve the problem of information security involves a wide range, including technology, management, system, personnel and law, etc., but the most important part is the password technology. Password technology is to achieve a transformation, which makes the protection of a large number of information into a small number of key protection. The graduation project to document encryption and decryption issues as the main research and discussion. First, the encryption technology to find information. Then the encryption method is outlined, and then the 3DES encryption for detailed analysis, and the completion of the design results are demonstrated, and finally attached to the code. Due to the limited capacity of the completion of this graduation project, there are many deficiencies and there may be some to find errors also please criticism. Thanks to.

相关主题