计算机毕业设计38DELPHI基于USB KEY的文件加密工具客户端的实现Word下载.docx
- 文档编号:18434968
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:29
- 大小:236.83KB
计算机毕业设计38DELPHI基于USB KEY的文件加密工具客户端的实现Word下载.docx
《计算机毕业设计38DELPHI基于USB KEY的文件加密工具客户端的实现Word下载.docx》由会员分享,可在线阅读,更多相关《计算机毕业设计38DELPHI基于USB KEY的文件加密工具客户端的实现Word下载.docx(29页珍藏版)》请在冰豆网上搜索。
解密
TheFilesEencryptionToolBasedonUSB-KEY
-----ClientSide
Abstract
Alongwiththedevelopmentofthecomputer,thesecuritydemandofthefilesisincreasing.Forthesakeofencryptingthefilesoftheuserstopreventtheactofstealingandimprovingthesecurityofthedocuments,thesecurityencryptionofthedocumentshavebecomeanimportantissue.
Thisdesignbasedonthecombinationofsoftwareandhardwaretoprovideaneasyandreliableapproachtoencryptfiles.Passwordmemorizationisnotnecessary.Thebenefitsofthisdesignareeasytouseandhighstability.ThisprojectiscodedbyDelphiandbaseonRockey2(atypeofUSBkey).ThispaperdescribesthebasicfunctionsandmethodstobuildafilesencryptiontoolsbasedonUSBkey.Detailsofimplementationarealsoinvolvedinthispaper.
Keywords:
encryptionlock;
encrypt;
decrypt
目录
论文总页数:
25页
1引言1
1.1课题背景1
1.2国内外研究现状1
1.3本设计研究的意义1
1.4本设计研究的方法1
2需求分析1
2.1用户问题分析1
2.2本设计应满足的需求2
2.3本设计的保护技术2
3设计与实现2
3.1程序语言:
delphi2
3.2USBKEY3
3.2.1USBKEY选型3
3.2.2Rockey2加密锁的优点3
3.2.3Rockey2加密锁要点说明3
3.3Rockey2内存分配4
3.4总体设计模块4
3.5客户端逻辑流程5
3.6客户端设计逻辑流程6
3.6.1初始化和写用户名的设计流程图6
3.6.2加密设计流程图7
3.6.3解密设计流程图8
4应用与编码9
4.1硬件的安装9
4.2控件的使用9
4.3进度框9
4.4初始化的应用与编码9
4.5写用户名和密码的应用与编码11
4.6文件加密应用与编码13
4.7文件解密应用与编码16
4.8查看被加密文件后的信息17
5操作界面19
结论20
参考文献21
附录22
致谢24
声明25
1引言
1.1课题背景
随着社会高科技,商品经济化突飞猛进的发展,计算机的应用已经普及到经济和社会生活的各个领域。
长期以来人们使用各种加密技术以保证计算机中信息的安全,防止被一些有不良用心的人看到或则破坏。
在信息时代,信息可以帮助团体和个人,使他们受益,同时,信息也可以对他们构成威胁,造成破坏。
在激烈竞争的社会中,大家都会想尽办法获取对方的资料。
因此客观上就需要有一种强有力的安全措施来保护我们的机密数据不被窃取和破坏。
1.2国内外研究现状
当前对文件加密的方法多种多样,如果按照是否使用附加硬件来区分,可以分为依赖特定硬件的加密方案和不依赖硬件的加密方案。
常用对文件加密的方法比如说:
winrar文件加密在当今也比较流行。
但是winrar有其自身的不足。
比如密码太长用户就不方便记忆,有可能会忘记,密码太短又会不安全。
如果利用扩展硬件来作为加密和解密就可以有效避免上面的问题。
因为它并不需要手工输入密码。
密码是保存在扩展硬件当中的。
1.3本设计研究的意义
如果使用扩展硬件来进行文件的加密具有访问速度快、可靠性高、保密性好、寿命长等优点。
但是以前的加密硬件成本较高,往往用在对安全要求相对较高的场合。
随着硬件成本的降低,这种设备已经可以被个人所接受。
因此本文描述了一种使用低成本USBKey来辅助进行加密的文件加密系统,可以广泛的应用在个人信息的保护和企业重要文件保护当中。
1.4本设计研究的方法
利用低成本的USBKey来保存加密和解密过程当中的密码,并且实现一个简单的客户端工具。
该工具符合大多用户操作WinRAR的习惯,方便的和WindowsShell集成,可以方便的对文件进行加密和解密的操作,同时具有方便、易用、安全的特点。
2需求分析
2.1用户问题分析
现在的用户都希望能够拥有一种很方便、很快捷的方法去对自己的文件进行加密,操作方式就如WINRAR操作那样方便。
并且加密安全强度高。
对密码有比较完善的管理。
因为现今一些对文件加密的方法在对文件进行加密时都需要用户手动输入密码。
如果密码太简单,那么加密过后的文件安全强度不高,文件的安全性就得不到保障;
密码太长又不方便用户记忆,并且随时可能忘记密码。
所以用户希望能找到一种更好的加密方式。
2.2本设计应满足的需求
利用USBKEY文件加密应尽量满足用户的需求,使用户对文件加密和解密的过程操作简单,使用方便。
并且对密码也要有完善的管理。
使用USBKEY可以在USBKey中保存密码,不在需要用户去手动输入密码,解决了用户去记忆复杂密码的过程。
利用USBKEY文件加密需要从两个方面去实现用户的需求,第一:
KEY的管理。
第二:
客户端应用。
在KEY的管理方面:
主要包括分类管理、客户添加、查看、编辑这几个方面的功能。
分类管理是指对锁里面保存的信息进行统一的归类,不同的信息保存在不同的地方。
并且对锁里面的相关信息进行记录,如果用户损坏或则丢失了锁,都能给用户提供一把相同的锁。
在客户端方面,应该尽量使操作简单,不麻烦,就类似winrar对文件加密的操作一样。
这样才能被用户接受。
这一方面主要完成文件的加密和解密操作。
USBKEY是一种带有USB接口的加密锁。
因为USBKEY是一种比较简化型的加密锁,不需要任何驱动程序。
并且它具有极高的加密强度,用硬件保存密码,用软件配合来使用。
并且携带方便,简单易用,性能稳定。
2.3本设计的保护技术
USBKEY文件加密需要有一把硬件KEY,USBKEY是一种智能型加密工具。
它是一个安装在USB接口上的硬件电路,同时它有一套使用于各种语言的接口软件和工具软件。
当被USBKEY保护的软件运行时,程序向插在计算机上的USBKEY发出查询命令,USBKEY迅速计算查询并给出响应,正确的响应保证软件继续运行。
如果没有USBKEY,程序将不能运行,它是将软硬件技术结合起来。
这种加密强度比较高。
如果KEY丢失了,但是别人没有你的文件和算法,他也不能对文件解密,如果文件和算法被别人获得,但是他没有KEY,同样他也不能对文件解密。
它采用软、硬相结合的加密方式。
3设计与实现
delphi
Delphi是Borland公司研制的新一代可视化开发工具,可在各类Windows环境下使用。
它拥有一个可视化的集成开发环境(IDE),采用面向对象的编程语言ObjectPascal和基于部件的开发结构框架。
Delphi它提供了100多个可供使用的构件,利用这些部件,开发人员可以快速地构造出应用系统。
开发人员也可以根据自己的需要修改部件或用Delphi本身编写自己的部件。
主要特点如下:
(1)直接编译生成可执行代码,编译速度快。
由于Delphi编译器采用了条件编译和选择链接技术,使用它生成的执行文件更加精炼,运行速度更快。
(2)支持将存取规则分别交给客户机或服务器处理的两种方案,而且允许开发人员建立一个简单的部件或部件集合,封装起所有的规则,并独立于服务器和客户机,所有的数据转移通过这些部件来完成。
这样,大大减少了对服务器的请求和网络上的数据传输量,提高了应用处理的速度。
(3)提供了许多快速方便的开发方法,使开发人员能用尽可能少的重复性工作完成各种不同的应用。
(4)具有可重用性和可扩展性。
开发人员不必再对诸如标签、按钮及对话框等Windows的常见部件进行编程。
(5)具有强大的数据存取功能。
3.2USBKEY
3.2.1USBKEY选型
利用USBKEY对文件进行加密和解密时,都需要有一把USBKEY硬件锁作为支配。
在众多的KEY中选用Rockey2加密锁作为这个USBKEY。
因为Rockey2加密锁是安全性比较高的免驱动的USB设备,同时售价低。
采用的是传统EPROM结构。
它制作容易,使用方便。
而且它象U盘一样方便携带,记录的空间也比较大。
适合各类人员对文件进行加密。
3.2.2Rockey2加密锁的优点
1:
兼容性好
Rockey2加密锁具有高度的透明性,特别是对多个相同的Rockey2加密锁也可以使用USBHUB并联在一起使用,相互之间不会有干扰。
2:
速度快
对于使用Rockey2加密锁加密后的软件,其运行速度同加密前的区别并不大,Rockey2加密锁能够在很短的时间内处理完毕,保证用户程序的顺畅运行
3:
使用简便
Rockey2加密锁最大限度的简化了接口。
可以在很短的时间内掌握它的使用方法,从而大大的节约了时间
3.2.3Rockey2加密锁要点说明
每一把Rockey2加密锁除了有1个独一无二的“硬件ID外”,还有1个用户可设定的“用户ID”,我们定义“硬件ID”为HID,“用户ID”为UID,这2个ID都是32bit位的DWORD数值。
每把加密锁都是倚赖这2个ID作为独一无二的识别标志。
当对Rockey2加密锁还没有进行初始化的时候,缺省的UID为0,这时候虽然能够使用这个等于0的UID来打开加密锁并进行读写操作,但无法获得正确的HID,因为当UID等于0的时候,表示的是出厂状态,这时候HID也会返回0。
只有当用户设定了自己的UID以后,才能够获得正确的HID。
在用户生成UID的时候需要给出1个长度不超过64个字节的字符串作为种子,加密锁会根据这个种子生成UID,这个生成算法是在加密锁内部完成的,而且是不可逆的,也就是说,只有生成者才知道什么样的种子能生成什么样的UID,别的人即使知道UID,也能够调用这个计算过程,但因为不知道种子是什么,是无法生成你的UID的。
另外在生成UID的时候,能够指定加密锁的EPROM是否是可写的,如果设定为不可写,整个EPROM处于写保护状态。
3.3Rockey2内存分配
Rockey2加密锁总共有2560个字节,为了便于管理,把USBKEY的存储空间分配成5个段,每个段为512个字节。
在把每个段划分成16个存储区,每个区32个字节。
这样便于对KEY的存储空间进行统一的分配和管理。
以后向KEY的存储区里面写入的信息时,信息都会自动保存到相关的位置。
表3-1内存分配示意图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
null
sn
Md5
un
NULL:
空值,没使用
SN:
密码
MD5:
加密解密算法
UN:
用户名
3.4总体设计模块
图3-1USB文件加密总体模块图
总体模块分为KEY的管理和客户端两部分。
在KEY的管理方面我们需要把KEY里面记录的信息都保存到数据库里面,方便我们查询、修改、添加和删除KEY里面的信息。
对每把锁都进行管理,防止有同号锁出现。
如果锁因为某种情况损坏或者是丢失了,那么可以通过数据库里面记录的信息复制一把相同的锁,这样就不用担心由于找不到锁而不能对已加密的文件进行解密操作。
对锁进行这样更加完善的管理。
才能进一步保障被加密文件的安全,让用户才会更加放心的使用。
客户端部分主要是完成操作方面的功能,我主要负责客户端的工作。
客户端主要包括两方面---文件加密和文件解密。
对文件进行加密时,要利用USBKEY中的密码对文件进行加密。
这就需要从KEY里面读取出密码并利用该密码并文件进行加密。
并且对该密码进行MD5换算。
得到密码的MD5值,把这个值称为XID。
对文件进行解密时,先从KEY里面读取出密码,然后对密码进行MD5换算,如果换算后的XID与被加密文件的XID一样就可以成功对文件进行解密,否则不能对文件解密。
3.5客户端逻辑流程
●初始化:
新的USBKEY并不能立即使用,对USBKEY进行初始化,才能对KEY进行读写操作。
初始化是利用种子生成UID并且随机产生密码,并将随机生成的密码保存到USBKEY的内存中。
初始化成功后,就可以向KEY里面写入用户名,用户名一旦写入就不可更改。
●文件加密:
在对文件加密时,我们需要从USBKEY中提取出密码,然后在利用该密码对文件进行加密。
●文件解密:
在对文件进行解密时,也需要先从USBKEY中读出密码,然后在对密码进行MD5换算,在把该密码的MD5值与被加密文件的MD5值进行对比,如果是MD5值相同,表明是由同一把Key加密,那么可以对文件进行解密操作,否则Key不匹配,不能对文件解密。
3.6客户端设计逻辑流程
3.6.1初始化和写用户名的设计流程图
图3-2初始化和写用户名的设计图
对KEY初始化是因为当拿到新KEY后,由于KEY里面是空的,什么信息也没有,那样就不能通过UID去获得正确的HID。
所以就需要对锁进行初始化,初始化的过程是在锁的内部完成的,并且是不可逆的。
在初始化过程中利用种子去生成UID,并且把随机生成的占有32个字节的密码保存在Key当中,种子是自己定义的含有64个字节的字符串,只有自己才知道这个种子是什么,因为同样的种子生成的UID是相同的。
在初始化的过程中还会随机产生密码,就连自己都不知道这个密码是什么,生成这个密码后,把密码保存到KEY中。
初始化成功后,就需要向锁里面写入用户名,用户名不能为空,并且用户名也保存到KEY中(用户名是在第一次使用Key对文件加密的时候,由用户输入。
客户端软件应该实现这个自动过程)。
上面的操作都完成后,就可以利用KEY对文件进行加密和解密了。
3.6.2加密设计流程图
图3-3加密设计图
在对文件进行加密时,首先要判断USBKEY在计算机上没有,如果没有连接到计算机上,就不能对文件进行加密,因为它找不到KEY,不能从KEY中读取出密码。
找到KEY并从KEY中读取出密码后,就可以利用该密码对文件进行加密,在加密过程中需要对文件进行预处理。
文件预处理:
在对文件进行加密和解密的过程中,需要对文件进行预处理。
判别出哪些文件需要加密,哪些文件不需要加密。
哪些文件已经加密过。
如果我正在使用当前文件,对当前文件正在编辑,那么它就会直接跳过该文件,不会对该文件加密。
它还要排除一些不需要的文件,比如链接文件,因为链接文件不是真实的文件,而是指向另外一个文件的“箭头”。
或则是已经被加密过的文件。
排除一些不需要的文件后,它就可以利用USBKEY中的密码对文件进行加密了,在加密过程中,我们还需要把密码的MD5值保存到被加密文件中,以便判断这个文件是被哪个Key加密的。
3.6.3解密设计流程图
图3-4解密设计图
文件进行解密的过程是文件加密的一个逆过程。
在对文件进行解密时,首先也需要判断USBKEY连接在计算机上没有,如果没有连接到计算机上,就不能对文件进行解密,因为它不能从KEY中读取出密码,从KEY中读取出密码后,在对密码经过MD5换算,得到密码的MD5值。
最后拿密码的MD5值与文件中的MD5值进行对比,如果MD5值相同,就表明是同一把KEY加密的文件,解密成功,否则解密失败。
4应用与编码
4.1硬件的安装
利用USBKEY实现文件加密,当然不能少了KEY,将Rockey2加密锁插入到和计算机的USB接口。
某些时候,你可能需要一条USB延长线来方便使用。
一旦连接后,Rockey2加密锁上的指示灯会被点亮。
如果指示灯不亮,请检查你的USB接口或是Rockey2加密锁。
在进行加密和解密之前,请确保Rockey2加密锁和计算机成功连接。
4.2控件的使用
在设计中用到了第三方控件shell控件和flex控件。
Shell控件主要是起到文件关联作用。
主要实施的是打开和查找文件。
USBKEY在对文件进行加密和解密时都需要去关联文件。
并且根据SHELL控件对应出不同的弹出菜单,单个文件或则是目录,因为USBKEY对文件进行加密,它只能对单个文件进行加密,不能对整个目录进行加密,它对目录加密也是对目录里面的单个文件进行加密,所以在对文件进行加密和解密时,都需要SHELL控件去找到文件的所在位置。
FLEX控件是压缩控件,在对文件加密过后,需要对文件进行压缩,并把用户名、文件名等信息写入到压缩文件中。
对文件解密是先对被加密过的压缩文件解压,并从压缩文件中读取出相应的数据。
FLEX保存数据是通过数组array来保存结果集合。
4.3进度框
因为在对文件进行加密和解密时都需要弹出一个进度框。
有进度框才能让更清楚的知道文件加密和解密的详细情况,在里面可以看见文件的总数,处理成功的文件的个数,处理警告和处理错误。
在处理的过程中,它会自动判断文件是否已经加密,在解密文件过程中,如果该文件不是被加密的文件或则不是被该把KEY加密的文件,他都会给我们跳过那些文件。
如果在中途取消对文件加密或则解密的操作,那么以前的操作还是成功的,只是对后面的操作不在进行。
在加密解密过程中,会出现当前进程和总进程,里面的蓝色条纹在动说明正在进行操作。
没动表明操作结束或失败。
4.4初始化的应用与编码
初始化是本设计的一个重要过程,新的加密锁并不可以立即使用。
但是加密锁是用来对密码进行统一的管理,所以需要把密码写入并保存到加密锁里面。
首先定义一个种子,种子的长度不能超过64个字节。
它由数字和字母组成。
SecureStr='
f6a24cac3922c691ad2ce13b64d83c546f994f11e14ada832dd1b9e167e64464'
,定义种子之后,就可随机产生密码和生成UID。
在随机产生密码的过程中,定义一个函数GenPass(),并且把密码的范围限制在32个字节以内。
然后需要随机生成密码,在随机生成密码的过程中调用Random(93)函数。
目的是让它产生一个从1到92之间的随机数。
但是ASC表中的32为空,为了防止在密码中出现空字符的情况,所以就取32之后的值。
//具体实现代码为:
begin
Randomize;
forI:
=1to32dobegin
Pass:
=Pass+Char(Random(93)+33);
end;
Result:
=Pass;
end;
随机密码产生后,在初始化过程中就利用种子生成UID。
在此过程中定义函数InitRockey(ESeed:
string;
varUID:
Cardinal;
ReadOnly:
boolean),对KEY进行初始化。
然后利用该种子产生密码,产生密码后就直接写入KEY里面。
//其关键代码为:
Str:
=ESeed;
IfReadOnly
thenRetcode:
=RY2_GenUID(Handle,GUID,PChar(Str),ROCKEY2_ENABLE_WRITE_PROTECT)
elseRetcode:
=RY2_GenUID(Handle,GUID,PChar(Str),ROCKEY2_DISABLE_WRITE_PROTECT);
………………省略…………………
UID:
=GUID;
产生的GUID的值就是UID的值。
最后在对锁进行初始化时,需要锁给出一个询问信息。
InitRockyQuery(),询问是否对锁进行初始化。
MessageDlg('
初始化Rockey?
'
mtConfirmation,[mbYes,mbNo],0)=6。
Confirmation在这里使用是在询问框中显示YES或则NO这两个确认按钮。
最后,创建一个工程文件,在里面直接调用InitRockyQuery(),它回自动弹出询问信息,点击确定就可以完成这个过程。
图4-1初试化窗口
4.5写用户名和密码的应用与编码
在初始化完成后,就需要向锁里面写入信息了,写信息是写入用户名。
用户名也被记录到KEY里面,成功向Rockey2加密锁写入信息后,就可以对文件进行加密和解密的操作了。
用户名写入后就不可更改,所以写入用户名的时候必须确认你要正确的写入用户名。
需要设计一个提示输入信息的窗口。
在页面的左上角插入一个图片,在设计面板上添加3个Label,并在里面写入需要的内容;
在设计一个编辑框Edit,在编辑框里用户可以输入姓名。
姓名的Length(S)不能大于32,超过这个范围,不能写入用户名。
ifLength(S)>
32thenbegin
MessageBox(0,'
您输入的姓名大于32个字符,请重新输入!
'
姓名过长!
MB_ICONWARNINGorMB_OK);
exit;
用户名里面的值不允许为空。
图4-2输入姓
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机毕业设计38DELPHI基于USB KEY的文件加密工具客户端的实现 计算机 毕业设计 38 DELPHI 基于 USB KEY 文件 加密 工具 客户端 实现