HUNAN UNIVERSITY
程序设计训练
——文件加密与解密
学生姓名 X  X  X
学生学号 20110102308
专业班级         建环308
指导老师         何英
2012-07-01 2012-07-13
一、程序设计目的和要求    2
二、程序设计内容    4
1、总体设计    4
1.1主控选择模块    4
1.2加密模块    4
1.3解密模块    4
2、流程图    5
三 模块详细说明    6
四、测试数据及其结果    7
五、课程设计总结    8
六、 附录    9
附录1:参考文献    9
附录2:程序源代码    9
一、程序设计目的和要求
1、目的:为保证个人数据资料不被他人窃取使用,保护个人隐私及个人文件。设计一个基
c语言的文本文件加密及解密软件,可以方便对文本文件的加密与解密。本设计实现了文本文件的解密及解密,运行软件之后只需输入任意一个文本文件的文件名及后缀名即可对该文本文件进行加密或解密操作。本设计的加密与解密系统,使用了面向各类文件的方法,运用Microsoft Visual C++ 6.0实现具有加密、解密、帮助信息、读取文本文件、显示结果、退出等功能的文件加密与解密系统。
2、要求:
1)从键盘输入要进行加密的一行字符串或者需要加密的文件名。
2)显示菜单:
3)选择菜单,进行相应的操作。加密方法是设置一加密字符串以及对文件的哪些部分进行加密;加密是将原始文件加密并保存到文件中;解密是将加了密的文件还原并保存到文件中,同时应比较与原始文件的一致性;
3、其他要求
1)变量、函数命名符合规范。
2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。
二、程序设计内容
1、总体设计
  本程序主要是对已知文件通过修改文件内容以达到文件加密的目的。整个系统由以下几大功能模块组成。
1.1主控选择模块
此模块是主程序操作界面,供用户进行选择。用户可选择执行加密或解密操作。
1.2加密模块
加密模块主要是完成对文件的加密操作。从外部文件中读入任意一个文件并将它加密并显示出来!
1.3解密模块
解密模块是完成对文件的解密工作,将密文转换为可被识别的明文。从外部文件中读入任意一个文件并将它解密并显示出来!
2、流程图
三 模块详细说明
'加密与解密函数说明:
'  CharSting  加密或解密的数据
'  Key    加密或解密的密钥
'函数返回值:
'  1. CharString为空时返回"1"
'  2. 加密或解密失败返回"0"
'  3. 成功则返回加密或解密后的字符串
Public Function EDcode$(CharString As String, Key As Integer)
  Dim X As Single, i As Long
  Dim CharNum As Integer, RandomInteger As Integer
  Dim CharSingle As String * 1c语言程序设计教程李丽娟
  On Local Error GoTo EDcodeError
  EDcode$ = ""
  If Len(CharString) = 0 Then
    EDcode$ = "1"
    Exit Function
  End If
  X = Rnd(-Key)
  For i = 1 To Len(CharString)
    CharSingle = Mid$(CharString, i, 1)
    CharNum = Asc(CharSingle)
    RandomInteger = Int(256 * Rnd) And &H7F
    CharNum = CharNum Xor RandomInteger
    CharSingle = Chr$(CharNum)
    EDcode$ = EDcode$ + CharSingle
  Next i
  Exit Function
EDcodeError:
  EDcode$ = "0"
End Function
四、测试数据及其结果
测试数据记录:
文件加密的初始界面
1选项后
再次确定后
输入密码后即完成加密
解密过程类似
五、课程设计总结
  在这个编程中,如果在设计时存在逻辑错误,虽然源代码没错,不过在运行时就有问题,在调试中前后函数的功能要对应,要不然就不能正确运行,还有一些基本的符合不符合规范,注意英文字母大小的书写。
通过这个C语言程序的编写,我遇到了许多问题,如:有些源代码的运用不是很清楚,这个加密解密处理文件比较大,处理起来比较麻烦,不过通过查阅资料,在草稿纸上进行算法的书写,终于把它搞定,让我明白坚持的力量,更重要的是怎么学习,要懂得不懂就要问,懂得吃苦了,比如我在调试的过程中就遇到了许多问题,不过我一个个的,慢慢的进行下去,这是我收获最大的,学C语言要多练才能编号程序。
六、 附录
  附录1:参考文献
1.  谭浩强    C语言程序设计(第二版) 北京:高等教育出版社,2002
2   谭浩强    C语言程序设计  清华大学出版社
3   徐士良等.  C语言常用算法程序集  清华大学出版社
4.  黄明等.    21世纪进阶辅导 C语言程序设计.大连理工大学出版社,2005
5.  马靖善等.  C语言程序设计.清华大学出版社,2005
6张毅坤等.  C语言程序设计教程[M] .西安交通大学出版社,2003
7.  张龙祥等.  面向对象程序设计[M].北京:人民邮电出版社,2001