在本次毕业设计开发中,我们以C#为开发语言,在.Net环境中开发了一个文档加密器。该软件可以对选择的文档进行加密和解密,可以设置加密密码。本来打算写一个基于文件内容的加密系统,后来由于遇到的问题过多所以只得放弃,选择了文件加密系统这个比较大众化的题目。这次的课程设计收获很多,在这次课设之前虽然也做过几个课设,但只是充当一个辅助的角色,仅仅停留在收集资料的层面上,并没有真正的写过多少代码,对Microsoft Visual Studio 2005也只是停留在了解基本界面和控件的基础上,这次的课设全部由自己完全负责,代码也是自己完成,其中某些代码是参考CSDN上的经典算法。这次的课设使我对Microsoft Visual Studio 2005这款软件C#有了更深层次的了解,更加熟悉了它的用法,感觉它是一款很强大的编程工具。除了对软件的熟悉,关于C#编程也有了很大的提高,在别人看起来可能微不足道,但对于自己绝对是一个很大的进步。一直以来我都觉得自己不可能一个人完成一个软件(即使是简单的)的代码编写,之前一直充当辅助角色大部分也是因为这个原因。但这次的课设证明了我是可以的,只是自己一直都没有去尝试而已,可以说这次完成这个课设给了我很大的信心,突然发现编写代码其实并没有想象中的那么困难。有很多东西别人已经做好了,拿来借鉴一下,然后根据自己的理解就可以编写出自己想要的代码,实现想要的功能。让我懂得了很多事其实只要肯去尝试,肯去努力,都是可以做到的。
如该软件只能对单机用户加密,没有涉及网络加密范畴。希望可以通过以后的学习能够不断的完善和强大本系统的功能。尽管如此,通过对这个软件的设计,我还是学习到很多的东西,这对于我本人来说,是一个相当大的进步。
毕业设计功能分析
这是一个文件加密系统,首先要完成加密功能。加密功能采用的是DES(Data Encryption Standard,DES)算法,在加密算法中这是一种比较安全的加密算法,目前只有一种方法可以破解该算法,那就是穷举法。它采用64位密钥技术,实际只有56位有效,8位用来校验的.譬如,有这样的一台PC机器,它能每秒计算一百万次,那么256位空间它要穷举的时间为2285年.所以这种算法还是比较安全的一种算法,这就保证了加密的安全性。
因此本系统拟实现以下几大功能:
一、文件的压缩和解压:在对文件加密之前先对文件进行压缩,然后再进行加密,解密的时候先对加密过的压缩文进行解密,然后解压缩,最好得到源文件。
二、加密与解密:对文件进行加密和解密
三、密钥的导入和导出:加密后导出密钥,另外存储;解密的时候可以导入密钥,方便快捷,不易出错。
本软件实现了文件的保密性,其中可以对原明文进行销毁,密钥可以另外保存,也可销毁,保证了灵活性。此外本软件无需安全,操作简单,容易上手,适合广大的群体使用。
待解决问题
由于文件是要先经过压缩再加密,所以必定会存在关于压缩后的文件(.rar形式)存放在哪里,而加密算法如何获得压缩后的文件(.rar)路径并对其进行加密的问题,考虑了很久都一直无法解决这个问题,后来请教了黄亮同学,经过指点,初步解决的方法是把压缩后的文件(.rar)直接让其保存在某个磁盘的目录下(比如C:\\WINDOWS),然后加密算法直接从那里调用压缩后的文件进行加密,在加密完成之后把压缩文件删除,以保证安全性。但这样必定会影响加密的速度,效率很低。之后又得到了李峰同学的帮助,可以把压缩后输出的文件直接赋值给加密算法的参数,这样实现了压缩与加密的完美结合,其代码如下:
clsZip zip = new clsZip();
zip.CompressFile(this.txtB1.Text, this.txtB1.Text + ".rar"); //调用压缩函数
然后在加密算法中直接调用输出的“txtB1.Text”文件,对其进行加密,实现的代码如下:
try
{
string MyInFileName = this.txtB1.Text + ".rar";
File.SetAttributes(MyInFileName, FileAttributes.Normal);
string MyOutFileName;
int intResult = MyInFileName.IndexOf(".");
StringBuilder sb;
sb = new StringBuilder(MyInFileName.ToString());
if (intResult > 0)
{
MyOutFileName = sb.Replace(".", "隐私.").ToString();
}
else
{
MyOutFileName = sb.Append("隐私").ToString();
开发环境
本款软件是用C#进行编写,C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。
系统设计
一、文件的压缩和解压:在对文件加密之前先对文件进行压缩,然后再进行加密,解密的时候先对加密过的压缩文进行解密,然后解压缩,最好得到源文件。
二、加密与解密:对文件进行加密和解密
三、密钥的导入和导出:加密后导出密钥,另外存储;解密的时候可以导入密钥,方便快捷,不易出错。
本软件实现了文件的保密性,其中可以对原明文进行销毁,密钥可以另外保存,也可销毁,保证了灵活性。此外本软件无需安全,操作简单,容易上手,适合广大的群体使用。
本软件设计和实现的功能主要有两个方面,一是对文件的加密,二是对加密的文件的解密工作。还附带了用户自己设定文件密码,密码验证和各个操作的正确性的提示。所以将加密器分为2个子模块:1文件加密,2文件解密。加密功能待完成网络方面数据流加密
节点加密和节点解密。对数据打包封装在网络上进行密文传输。局部文本加密替换功能也是一个研究的方面。密钥的分配和更改需要通过必要的渠道进行传输,密钥的管理也关系到整个加密文件的安全因数。