学院、系: 吉林大学珠海学院计算机科学与技术系 专业名称: 课程设计科目 学生姓名: 指导教师: 完成时间:
软件工程 C语言程序课程设计
何建荣 曾志平 2010年3月-5月
文件加密
一、 设计任务与目标
对文件进行加密,可以使得用户在进行访问该文件时不能及时有效得获取该文件的信息,从而使得信息不容易被泄露。本设计需要达到的目标是将一文件中的内容通过其他形式的转变,转化为伪信息。
二、方案设计与论证
设置对文件进行加密的具体函数dofile,用户输入要加密的文件和密码后,经过加密算法对其内容中的ASCII码进行转换,再导出另外一个文件,达到文件加密的效果。
三、程序框图或流程图,程序清单与调用关系
用户输入的要加密的文件名、密码 得到要加密的文件名与密码 判断文件能否打开或者创建加密后的文件 Y
加密算法开始 加密结束 N 四、全部源程序清单 #include #include void dofile(char *in_fname,char *pwd,char *out_fname);/*对文件进行加密的具体函数*/ void main(int argc,char *argv[])/*定义main()函数的命令行参数*/ { char in_fname[30];/*用户输入的要加密的文件名*/ char out_fname[30]; char pwd[8];/*用来保存密码*/ if(argc!=4){/*容错处理*/ printf(\"\\nIn-fname:\\n\"); gets(in_fname);/*得到要加密的文件名*/ printf(\"Password:\\n\"); gets(pwd);/*得到密码*/ printf(\"Out-file:\\n\"); gets(out_fname);/*得到加密后你要的文件名*/ dofile(in_fname,pwd,out_fname); } else{/*如果命令行参数正确,便直接运行程序*/ strcpy(in_fname,argv[1]); strcpy(pwd,argv[2]); strcpy(out_fname,argv[3]); dofile(in_fname,pwd,out_fname); } } /*加密子函数开始*/ void dofile(char *in_fname,char *pwd,char *out_file) { FILE *fp1,*fp2; register char ch; int j=0; int j0=0; fp1=fopen(in_fname,\"rb\"); if(fp1==NULL){ printf(\"cannot open in-file.\\n\"); exit(1);/*如果不能打开要加密的文件,便退出程序*/ } fp2=fopen(out_file,\"wb\"); if(fp2==NULL){ printf(\"cannot open or create out-file.\\n\"); exit(1);/*如果不能建立加密后的文件,便退出*/ } while(pwd[++j0]); ch=fgetc(fp1); /*加密算法开始*/ while(!feof(fp1)){ fputc(ch^pwd[j>=j0?j=0:j++],fp2);/*异或后写入fp2文件*/ ch=fgetc(fp1); } fclose(fp1);/*关闭源文件*/ fclose(fp2);/*关闭目标文件*/ } 五、程序运行的测试与分析 先在所创建的c语言文件下创建一个file1.txt文件输入内容; 运行后,自动生成一个文件file2.txt 内容进行了加密 内容进行了加密: 六、结论与心得 进一步的了解了c语言的精髓,然后能够增加自己阅读c程序以及写c程序的能力,对以前没有碰过的函数fopen等有了一个认识,希望自己以后写程序能够更加熟练和自信,努力地思考与实践。 七、参考资料 http://tieba.baidu.com/f?kw=c%D3%EF%D1%D4 百度c语言贴吧 八、致谢 非常感谢贴吧的帮助。 课程设计成绩评定表 经过参考和详细的测试与修改后,完成了简易的加密对课程设计工作过的算法,让自己的分析能力和动手能力有了一定的提高 程的简短介绍和自 我评价 学生签名:何建荣 2010年 5 月 31 日 (以下由评定小组教师填写) 质量评价指标(在相应栏目打√) 评 价 质 量 评 价 项 目 优秀 工作量和态度 实验、计算可靠性 文字和图表质量 总体评价 良好 一般 及格 不及格 评定成绩(百分制) 评定小组成员签名 2010年 月 日 制定人:王钲璇,苗雨 审定人: 陈守孔 因篇幅问题不能全部显示,请点此查看更多更全内容