题目:文件加密系统
完成功能:
1. 对密码本进行字符的统计,以及计算其权值,存储在线性表中。
2. 对二叉树结构修改为三叉树结构(森林),并利用 1 中的线性表建立三叉树结
构形成 012 串,与文件中字符进行比对,生成文件编码 Code.txt。(XX)
3. 对需要解密的文件以及密码本进行比对,解密并形成解密文件 decode.txt
4. 前端界面以及选择功能。
I
摘要
在计算机技术突飞猛进的今天,加密程序的开发越来越受到开发者的青睐。
本次数据结构课程设计选择文件加密系统,系统主要使用了哈夫曼编码技术,开发
了一个对英文文本文件进行加密和解密的程序。在技术上对哈弗曼编码中的最优二
叉树进行改进,由二叉树变为三叉树(森林),减少了编码文件的空间,并且在编
码过程中我们采用动态分配叶子的方法,一旦密码本中的字符计数出现增加或者减
少,或者说密码本中字符的顺序发生改变,生成的 012 串也会相应的做出改变,而
不会把每一个字符的编码给写死。同时,支持用户自定义选择密码本以及加密解密
文件。
2
目录
目录
摘要............................................................................................................... 2
目录............................................................................................................... 3
第 1 章 课程设计内容.............................................................................................. 5
1.1 设计目的................................................................................................... 5
1.2 设计要求................................................................................................... 5
1.3 功能要求................................................................................................... 5
第 2 章 系统分析..................................................................................................... 6
2.1 系统结构图................................................................................................ 6
2.2 函数结构图................................................................................................ 6
第 3 章 详细设计...............................................................................................7
3.1 HumanTreeLib.h 文件(三叉树结构主要实现层).................................7
3.2 Count.h(密码本字符计数功能)........................................................14
第 4 章 运行与测试...................................................................................18
4.1 用户界面................................................................................................. 18
4.2 选择密码本(用户自定义密码本,密码本选择不同时)...................................18
4.3 文件加密(需在选择密码本后进行)...........................................................20
4.4 文件解密(需在选择密码本后进行)...........................................................23
总结............................................................................................................ 27
系统优点................................................................................................. 27
系统缺点................................................................................................. 27
设计体会................................................................................................. 27
参考文献....................................................................................................... 29
摘要............................................................................................................... 2
目录............................................................................................................... 3
第 1 章 课程设计内容.............................................................................................4
1.1 设计目的................................................................................................... 4
1.2 设计要求................................................................................................... 4
1.3 功能要求................................................................................................... 4
第 2 章 系统分析....................................................................................................5
2.1 系统结构图................................................................................................5
2.2 函数结构图................................................................................................5
第 3 章 详细设计....................................................................................................6
3.1 HumanTreeLib.h 文件(三叉树结构主要实现层)......................................6
3.2Count.h(密码本字符计数功能)...............................................................13
第 4 章 运行与测试............................................................................................... 17
4.1 用户界面................................................................................................. 17
4.2 选择密码本(用户自定义密码本,密码本选择不同时)..................................17
4.3 文件加密(需在选择密码本后进行)...........................................................19
4.4 文件解密(需在选择密码本后进行)...........................................................22
总结............................................................................................................. 25
系统优点................................................................................................ 25
3
系统缺点................................................................................................ 25
设计体会................................................................................................ 25
参考文献....................................................................................................... 27
附录............................................................................................................. 28
4
第 1 章 课程设计内容
1.1 设计目的
目前大多数用户常用的对文件进行加密的方法就是密码保护, 而这种加密方法简单适用,
但它同时也留下了巨大的安全隐患。对于一些破译高手而言, 往往很容易攻破这种密码保护。
要想让非法用户很难破译甚至是几乎不可能破译, 他才会望而却步, 而这样做的惟一方法就
是使密码尽可能复杂同时对用户而言又满足某种规律。
由于计算机文件中的字符具有统计特性, 能够统计出每种字符在文件中出现的概率。当
文件中所有字符的概率统计出来后, 就可以用多元哈夫曼编码的方法给文件生成对应的哈夫
曼编码表, 然后用这个哈夫曼编码表对文件进行加密。由于这个哈夫曼编码表足够复杂同时
又满足编码的规律, 非法用户想要破解密文几乎是不可能的。
[1]
因为在上学期已经实现了二叉树的基本结构以及基本算法,所以本次实际应用我们选择
该课题,再次深入了解树或者森林的魅力。
本次课程设计的目标:
1. 回顾《数据结构》中线性表以及二叉树的基本知识,加深对数据结构理解。
2. 掌握 C++编程方法以及程序调试的基本技能。
3. 尝试对数据结构进行创新以及改进,改变其空间复杂度以及时间复杂度。
1.2 设计要求
(1)以某文件为样本进行哈夫曼编码或其它编码
(2)输入待加密文件进行加密
(3)输入待解密文件解密
1.3 功能要求
(1)能够对一个文件其中的字符进行统计,统计其出现的字母(中文)个数。
(2)能够对一个文件进行加密,并输出加密文件以及其密码本
(3)能够将加密生成的文件还原成源文件
5