搜档网
当前位置:搜档网 › C语言文件加密课程设计

C语言文件加密课程设计

C语言文件加密课程设计
C语言文件加密课程设计

C

实验名称:文件加密

院系: *************学院

班级:通信工程********班

成员: ***、**、**、**、** 日期:2012年6月25日—7月6日

设计题目:文件加密

一、本次课程设计的目的

通过对文件的加密保护用户的私人隐私,使学生能更好的掌握好高级语言程序,从而了解对程序设计的基本概念和方法,进而学会利用C++语言解决一般应用问题,并为后续的专业学习奠定基础。同时增强同学们之间的团队合作精神,使学生更好的融入社会,将来成为社会有用之才!

二、设计要求

1.要求打开一个源文件,按用户输入的密钥通过异或用算进行加密,加密后文件存入目标

文件中。

2.要求开始时进行程序使用的鉴权,验证密码。

3.可以对程序原密码进行修改,对密钥进行修改。

4.要求写出设计报告,报告中要求写出总体设计框架和详细程序分析。

5.5-6名学生为一组,选出组长共同完成。在报告中各同学要明确写出自己所做的工作,并由组长认可评定。

6.书写及设计方案均用A4纸打印以便统一装订成册,并且要求上交电子文本。

三、总体方案的设计及说明

文件加密主要可以分为两大部分:对文件的加密、解密程序和对改密码、改密钥程序。首先运行程序后会对用户进行一个鉴别,需要输入一个与程序事先设定好的密码才打开程序,输入错误次数最高为3次,此程序初始设定密码为123456,,所以输入超过6位的密码程序直接结束退出,输入单个字符字母和数字一样都可以最高输入3次错误,之后便系统自动退出,如输入2-6位字母则只可以输入2次错误系统自动退出,体现了其合理性对数字的高度识别性。

进入程序后该系统共有4个选项即:1.文件加密2.文件解密3.修改密码0.退出程序

用户可选择对应项进行使用及操作。并且进入系统后显示“Welcome”大字符,和相关设计者。进入程序可以对指定的文件进行加密和解密,对密钥进行修改,加密时密钥可由用户随机输入,方便记忆体现其人性化的设计,从而便于加密后记忆,针对了不同的使用人群。

文件的加密、解密程序部分由***、***同学负责。改密码、改密钥程序部分的程序由***、***同学负责。课程设计报告和资料查询由***、***同学负责。

四、程序流程图

五、程序运行结果

1.打开程序,输入密码进行鉴权

2.密码输入三次错误后

3.密码输入正确后,进入程序

4.对文件进行加密(可自行指定任意一个)

5.加密成功

加密后的文件不输入密钥打开则是乱码

原文件:

解了密钥的文件打开如下

输入错误2次后,最后一次输入正确并改密123678

六、个人收获和体会

***(组长) ******0123

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

在做课程设计时,由于运用了很多新知识,新的方法,还有题目更加复杂,应用性更强,在编写过程中遇到了很多困难,幸好我们有团结的集体,通过大家的努力、配合,我们将问题逐个解决,最终成功的完成了作业,由于担任组长,我的领导能力得到了锻炼,对c语言有了进一步理解,这对我们工科学生来说意义是相当重大的,在此感谢我组同学的支持和老师的帮助和指导。

经过这次的学习、设计,我们学到了许多以前不懂的、难懂的知识。这真是锻炼人的好机会,我很喜欢这种应用性的学习。我要感谢我的老师、我的伙伴,你们使我懂得了许多、许多。

*** ******0117

在这次和同组人一起设计程序过程中,我深刻体会到一个人的力量是渺小的,只有大家同心协力,才能完成好一项工作。在设计统计块时,开始遇到了不少困难。例如:文件加密异或是什么?又如:在写程序时,因为对数组,指针不熟悉,而出现了不少错误。经过学习,讨论,最后克服了这些困难。经过这次设计,我对数组,指针的知识和使用又上了一个台阶。数组和指针那么地方便,它真是C语言的重点,精华所在。所以,在以后的学习中,我更应抓紧对指针的学习。

*** ******0111

很高兴能有这样一个机会和同学一起完成一项任务,这其中有各种各样的问题,但通过大家一起讨论,并在老师的耐心辅导下,最终把那些问题都解决了。从中我学到了如何应对困难,如何与人合作。在最终完成作业的那一刻,我们心中都非常的高兴。

我想有了这样一次体验,在以后漫长的人生路上,我们在面对许多意想不到的困难与挫折时,我们会更从容的去面对。通过这次合作,我使自己的动手能力和与人沟通的能力得到了提高,这将使我在以后的的道路上走的更稳,收获更多。所以,我们应感谢老师的良苦用心。本来我还不太赞成这种做法,但现在,我知道了,这是对的,是值的我们用心去做的。

同时我也知道了我们随时都要培养自己的动手能力,只有这样,才能更好的适应这个日新月异的飞速发展的社会。

*** ******0105

C语言的确不太容易学,后来学了几节课,觉得也没什么,就是要记的东西比较多,每天都有新内容,记一记就可以了,但当老师布置了几个小作业之后,问题就出现了,单独拿出来每个东西我都略知一二,而让我把它们连接起来,做一个程序,那就难了,每次都是老师写好我们抄,一两次之后,通过对比,我发现这些程序之间有好多东西,都是共同的,变化的指示针对不同问题的处理方法,当然这要通过数学运算来完成,困难之处就是怎样把一个个问题用数学的方法表示出来,怎样表示更简便而已,我的数学还可以,这对我来说不成问题,因此我的信心又恢复了。

*** ******0129

虽然在工作中我们有分歧,有争吵但我们都很好的解决了问题,增进了友谊,锻炼了团结协作能力,受益匪浅。其中第一部分和第二部分有点难易失调,是我和组长共同完成,更

加体现出了分工和协作的优点和重要性。

我对自己在这份作业中的表现特别满意,提出了很多很好的建议,事实表明那些建议确实起到了很好的作用。也加深了我对”= =”和”if”等的理解和操作,从实践中了解和体会到了C++的魅力和作用,也让我体会到大学学的东西的重要性。

七、组长评语

这次的课程设计中,让我们收获了很多。

首先,很荣幸我能成为组长和我们组的同学一起做这次的实习课题,而我们组能在规定的时间内出色完成,是我们组所有人共同努力的结果。这次的课题,对我们来说确实难度非常大,对初学C语言的我们来说,最初的几次尝试,几乎就无法完成这个课题。后来,在老师对课题的简单讲解后,我们对课题有了更深的理解,同时也有了完成课题的信心。最后经过了不懈的努力,终于将这个程序完成。在这里要谢谢老师对我们的帮助,更感谢我们组的同学,没有你们的努力,我们跟本无法这么快将这个课题做完。我希望在今后的学习道路上,我们组还要继续发扬这种迎难而上精神,保持着对知识的渴望和追求,向着胜利的方向继续前进!

组长给小组成员打分表

源程序:

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

#include // 标准库函数

#include // 字符串处理函数

#include // 字符操作函数

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

int getpassword(char password[]) //密码

{

FILE *fp;

char pwd[30];

if((fp=fopen("c:\\password.dat","w+"))==NULL)

{

printf("出错!程序退出\n");

}

else

{

fscanf(fp,"%s",pwd);

}

if(!strcmp(password,pwd))

return (1);

else return (0);

}*/

///////////////////////////////////////////////////////////////加密解密void fun(char *s_file,char *m,char *c_file)//加密解密

{

int i=0;

FILE *fp1,*fp2;

register char ch;

fp1=fopen(s_file,"rb");

fp2=fopen(c_file,"wb");

if(fp1==NULL)

{

printf("不能打开文件\n");

exit(1);

}

if(fp2==NULL)

{

printf("不能建立文件\n");

exit(1);

}

ch=fgetc(fp1);

while(!feof(fp1))

{

ch=ch^*(m);

fputc(ch,fp2);

ch=fgetc(fp1);

}

fclose(fp1);

fclose(fp2);

}

/*//////////////////////////////////////////////////更改密码

void passwordchange()

{

FILE *fp;

char pwd[30];

printf("请输入新密码:\n");

scanf("%s",pwd);

fp=fopen("C:\\password.dat","w");

fprintf(fp,"%s",pwd);

printf("密码修改成功\n");

fclose(fp);

}*/

///////////////////////////////////////打印欢迎界面

void pr()

{

printf("\n######################### 文本加密解密管理软件

####################################\n\n");

printf(" 文 ** ** ** \n");

printf(" 本 ** ** ** \n");

printf(" 加 1. 文件加密 ** * ** ** \n");

printf(" 密 2. 文件解密 ** * ** ***** ** ****

***** * * ***** \n");

printf(" 解 3. 更改密码 ** * ** ** ** ** **

** ** ** ** ** ** **\n");

printf(" 密 0. 退出系统 ** * * ** ******* ** **

** ** ** ** ** *******\n");

printf(" 系 *** *** ** ** ** ** ** ** ** ** ** \n");

printf(" 统 ** ** ***** ** **** ***** ** ** ** ***** \n");

printf("\n###############################################################

#########################\n");

printf("\n 请输入选项(0-3):\n");

printf("Design By: 西安科技大学通信工程****班 ***、***、***、***、***\n");

}

void main(int argc,char*argv[])

{ int k,trytimes=0,newpwd,pwd;

char sourcefile[30];

char codefile[30];

char m[10],ch;

int password=123456,flag=1;

int j,q;

printf("如需打开程序需验证您的权限!!!\n");// 鉴权作用,判断是不是本程序或

电脑安装程序的使用者

for(trytimes=1,pwd=0;password!=pwd&&trytimes<3;trytimes++)

{

printf("您还有%d次输入密码的机会,请输入6位数字密码:

\n",4-trytimes);//本程序密码设置为6位阿拉伯数字,如输入超过6位系统直接退

scanf("%d",&pwd);

getchar(ch);

flag=0;

if(pwd==password) flag=1;

}

if(flag!=1)

{printf("您已三次输入错误密码,请查证后再打开程序!\n");//进入此程序

共有三次输入密码机会,输入错误则系统自动退出

exit(1);

}

loop:system("pause");

system("cls");

pr();

scanf("%d",&k);

system("pause");

system("cls");

switch(k)

{

case(0):{exit(0);break;}

case(1):

{if(argc!=4)

{ printf("请输入要加密的文件名:\n");//用户给需要加密的文件加密

scanf("%s",sourcefile);

printf("请输入密钥:\n");//密钥是用户自己定义的,可以随意给需要加密的文件添加密钥

scanf("%s",m);

printf("请输入要保存的文件名:\n");//给加密后的文件命名,并保存

scanf("%s",codefile);

fun(sourcefile,m,codefile);

}

else

{

strcpy(sourcefile,argv[1]);

strcpy(m,argv[2]);

strcpy(codefile,argv[3]);

fun(sourcefile,m,codefile);

}

system("cls");

printf("文件已成功加密,正在保存,请稍后!!!");

}

break;

case(2):

{

if(argc!=4)

{printf("请输入要解密的文件名:\n");//用户给需要解密的文件解密

scanf("%s",sourcefile);

printf("请输入密钥!\n");//需要输入用户之前设定的密钥对加密的文件进行解密

scanf("%s",m);

printf("请输入要保存的文件名:\n");//对解密的文件系统又可以提供保存路径

scanf("%s",codefile);

fun(sourcefile,m,codefile);

}

else

{

strcpy(sourcefile,argv[1]);

strcpy(m,argv[2]);

strcpy(codefile,argv[3]);

fun(sourcefile,m,codefile);

}

system("cls");

printf("文件已成功解密,正在保存,请稍后!!!");

} break;

case(3):

{ for(pwd=0,flag=1,trytimes=0;password!=pwd&&trytimes<3;trytimes++) {

printf("您还有%d次输入原密码的机会,请输入原密码:\n",4-trytimes);//修改该程序原密码,如原密码输入错误次数超过限定则程序自动退出

scanf("%d",&pwd);

flag=0;

if(password==pwd)

flag=1;

}

if(flag)

{

printf("请输入新密码:");//保存修改后的新密码

scanf("%d",&newpwd);

password=newpwd;

} else

{

printf("您已三次输入错误密码,请查证后再打开程序!");

exit(1);

}

} break;

default:

printf("请输入正确的选择!");//如输入不是系统所设序号,系统会提示此项}

for(q=0;q<270000000;q++)

;

system("cls");

printf("接下来您想干什么:\n");

printf("1:返回至初始步\n");

printf("2:立刻关闭程序\n");

scanf("%d",&j);

if(j==1)

goto loop;

else

{ if(j==2)

exit(1);

else printf("请输入正确的选择!");//如输入不是系统所设序号,系统会提示

此项

}

}

参考资料

《C程序设计(第二版)》谭浩强清华大学出版社

《C语言程序设计》田祥松西安电子科技大学出版社《C语言课程设计》黄明等电子工业出版社

《C语言编程之道》刘彬彬等人民邮电出版社

《C语言程序设计现代方法》【美】 K.N.King 著吕秀峰译人民邮电出版社

《C语言经典范例50讲》任志宏程超北京希望电子出版社

文件加密与解密—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类结构图

加密解密课程设计

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

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

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

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); } });

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

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

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

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

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

加密技术及密码破解实验报告

第九章、实验报告 实验一、设置Windows启动密码 一、实验目的:利用Windows启动密码保存重要文件。 二、实验步骤: 1、在Windows XP系统中选择开始——运行,在打开输入框中“syskey.exe”,点击确定,打开“保证Windows XP账户数据库的安全”对话框。 2、单击【更新】,打开【启动密码】对话框,然后输入密码,在【确认】文本框中再次输入密码,单击【确定】

实验二、为word文档加密解密 一、实验目的:保护数据的安全 二、实验步骤: 1、打开一个需要加密的文档,选择【工具】——【选项】——【安全性】然后输入想要设置打开文件时所需的密码 2、单击【高级(A)】打开加密类型对话框,选中【加密文档属性】复选框,单击【确定】。

3、打开文件的【确认密码】对话框,输入打开文件时需要的密码,单击【确定】,随即打开【确认密码】对话框,输入密码。 4、保存文件后,重新打开Word文档,打开【密码】,输入打开文件所需的密码,单击【确定】输入修改的密码,单击【确定】 破解word密码 (1)安装Advanced Office Password Recovery软件,安装完成后打开需要破解的word 文档,进行暴力破解,结果如图所示: 实验三、使用WinRAR加密解密文件

一.实验目的:加密文件,保证文件的安全性。 二.实验步骤: 1、在需要加密的文件夹上右击,选中【添加到压缩文件】打开【压缩文件名和参数】 2、选中【压缩文件格式】组合框中的【RAR】并在【压缩选项】中选中【压缩后删除源文件】然后切换到【高级】,输入密码,确认密码。 3、关闭对话框,单击确定,压缩完成后,双击压缩文件,系统打开【输入密码对话框】 破解WinRAR加密的文件 (1)安装Advanced RAR Password Recovery软件,打开WinRAR加密文件,进行暴力破解,获得密码。结果如图:

文件加密系统课程设计

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

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

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

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比特的标准算法和逻辑运算,运算速

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); */ }

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.

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系统运行环境

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

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

JAVA课程设计题目:文件的加密与解密 姓名: 学号: 班级: 日期: 指导老师 分数

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

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

件,这样就将密文、算法参数、解密密钥三都密封到一个对象中了。口令的hash值作为产生密钥的参数。设计流程图如下所示: 设计文件加密解密的界面 实现hash算法,用于产生口令的hash值 实现由口令hash值产生密钥的算法 实现文件加密算法加密按钮事件实现文件解密算法解密按钮事件 文件加密与解密设计流程图 本系统中,包含

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

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

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

摘要 随着网络技术的不断发展,人们的个人信息、网络间的文件传递、电子商务等方面都需要大力的保护,文件加密技术也就随之产生.文件的加密主要是由加密算法实现,加密算法有多种,常见的有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)在基本要求达到后,可进行创新设计,如改善算法性能、友好的人机界面。

加密解密课程设计

兰州商学院陇桥学院 工学系课程设计报告 课程名称: 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)在基本要求达到后,可进行创新设计,如改善算法性能、友好的人机界面。

java文件加密解密课程设计

课程设计报告书 课程名称面向对象程序设计 设计题目文本文档的加密与解密 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); } });

单片机电子密码锁课程设计

基于单片机的电子密码锁设计 一、设计要求和条件 1.1 设计要求 根据单片机开发板所提供的元件特性和硬件电路,编写相关的程序,通过实验开发板实现电子密码锁在LCD1602上显示的功能。 1.搭建proteus仿真电路图平台,模拟单片机要实现的功能; 2.焊接单片机系统开发板; 3.编写程序,实现密码锁相关功能; 4.下载并调试程序,实现密码锁的具体功能。 1.2 设计目的 1.熟练掌握KEIL软件的使用方法; 2.熟练掌握PROTEUS软件的使用方法; 3.掌握单片机I/O接口的工作原理; 4.掌握中断系统的工作原理; 5.掌握液晶LCD1602的工作原理及编程方法; 6.掌握蜂鸣器的编程使用; 7.掌握行列式键盘的工作原理及编程使用方法; 8.掌握单片机的ISP下载使用方法。 1.3 功能概述 本设计是基于单片机的密码锁设计方案,根据要求,给出了该单片机密码锁的硬件电路和软件程序,同时给出了硬件设计方案、软件流程图、C 语言源程序及详细注释等内容,由于单片机实验板上的矩阵键盘为3*3的,则规定0-5号键为数字键,6-8号键为功能键,其中该密码锁的具体功能介绍如下: (1)按“8”号键则输入密码,初始密码为012345,在LCD1602上显示密码值为“******”(密码是保密的),输完6位后键盘就锁定,在LCD1602上显示密码是否正确,若输入的密码长度小于6位,则1602等待密码输入。 (2)若密码输入正确后,则绿色的发光二极管亮表示开锁,并且1602上显示“you are right!”,等待是否修改密码。

(3)密码输入错误时显示“code is wrong”,接着会给你第二、第三次机会输入密码,如果三次密码都错误时,发出“叮咚”的报警声,且红色报警指示灯不停闪烁,按复位键清除报警。 (4)按“7”号键表示若密码不小心输入时,可以删除输入错误的密码。 (5)按“6”修改密码,要求输入原密码是正确的,然后按该键后,蓝色密码修改指示灯会亮,并且1602上会显示“Input new code”,输入正确要求再次输入,两次输入一致提示“Modify right!!!”并返回主菜单。两次不一致时提示“Modify error!!!”,然后返回主菜单。 二、硬件设计方案的论证 本系统整体主要划分为五大模块,分别是由单片机最小系统、矩阵键盘、LCD显示、报警系统、指示灯电路等组成。单片机系统主要功能是对外部输入的数据进行处理,显示电路将所要操作的步骤显示出来,指导用户使用,报警电路是对输入错误密码时的警告报警。系统能完成开锁、密码输入错误报警、密码删除、修改用户密码基本的密码锁的功能。若依据实际的实验板情况还可以添加遥控和掉电保护功能。 2.1 总体方案设计 本设计的具体总模块设计方案如下图(1)所示 图(1)硬件总方案模块框图 2.2 具体模块方案的设计 1.主控芯片的方案选择 方案一:采用硬件电路进行电子密码锁设计,比如使用 74LS112 双

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

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

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

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

DES文件加密实验报告

DES文件加密实验报告 一、DES算法简介 DES是Data Encryption Standard(数据加密标准)的缩写。它是由IBM公司研制的一种加密算法,美国国家标准局于1977年公布把它作为非机要部门使用的数据加密标准,二十年来,它一直活跃在国际保密通信的舞台上,扮演了十分重要的角色。 DES是一个分组加密算法,他以64位为分组对数据加密。同时DES也是一个对称算法:加密和解密用的是同一个算法。它的密匙长度是56位(因为每个第8 位都用作奇偶校验),密匙可以是任意的56位的数,而且可以任意时候改变。其中有极少量的数被认为是弱密匙,但是很容易避开他们。所以保密性依赖于密钥。 二、用C#实现DES文件加密 指定文件,输入密钥来加密和解密数据。DESCryptoServiceProvider基于对称加密算法。Symmetricencryption 需要一个密钥和一个初始化向量(IV) 加密请。要解密的数据,必须具有相同的密钥和IV。使用的加密提供程序来获取encryptingobject (CreateEncryptor) 创建CryptoStream类的一个实例,现有输出文件流对象的构造函数的一部分。 要解密文件,执行以下步骤:创建一个方法,并命名该按钮DecryptFile.解密过程是类似于theencryption 进程,但是,DecryptFile过程从EncryptFile过程的两个主要区别。而不是CreateEncryptor使用CreateDecryptor来创建CryptoStream对象,用于指定如何使用该对象。解密的文本写入目标文件,CryptoStream对象是现在而不是目标流的来源。 三、运行环境 可将DES文件加解密软件的可执行.exe文件直接在xp,win7等系统上运行。 四、实验结果 1、开始界面 2、打开要加密文件、输入密钥

相关主题