计算机毕业设计38DELPHI基于USB KEY的文件加密工具—-客户端的实现.doc
计算机毕业设计38DELPHI基于USB KEY的文件加密工具—-客户端的实现
收藏
资源目录
压缩包内文档预览:(预览前20页/共30页)
编号:539982
类型:共享资源
大小:208.66KB
格式:ZIP
上传时间:2015-11-29
上传人:QQ28****1120
认证信息
个人认证
孙**(实名认证)
辽宁
IP属地:辽宁
4.8
积分
- 关 键 词:
-
计算机毕业设计论文
- 资源描述:
-
计算机毕业设计38DELPHI基于USB KEY的文件加密工具—-客户端的实现,计算机毕业设计论文
- 内容简介:
-
分类号: TP315 U D C: D10621-408-(2007)5745-0 密 级:公 开 编 号: 2002214042 成 都 信 息 工 程 学 院 学 位 论 文 基于 USB KEY 的文件加密工具 -客户端的实现 论文作者姓名: 康桃义 申请学位专业: 计算机科学与技术 申请学位类别: 工学学士 指导教师姓名(职称): 高宏宇(讲师) 论文提交日期: 2007 年 6 月 4 日 nts 基于 USB KEY 的文件加密工具 -客户端的实现 摘 要 随着计算机不断的发展,文件的安全性受大越来越大的重视,为了对自己需要保密的文件进行加密,防止别人窃取和不被别人识别,提高文件的安全强度,文件加密已成为一个重要的话题。 本设计为了解决用户记忆烦琐的密码问题,以软、硬件相结合的方式,实现了文件加密和解密的功能。具有操作简单、稳定性高、兼容性好、速度快等特点。该系统使用 Rockey2 加密锁,用 delphi 进行开发。本文主要介绍了该设计的基本功能及实现方法。在设计与实现中对 KEY 内存的划分,初始化、 文件加密和文件解密进行了详细的分析和说明;在应用与编码中介绍了各个模块的应用与实现;最后介绍了本设计的操作界面及改进方式。 关键词: USB;加密锁;加密;解密 nts The Files Eencryption Tool Based on USB-KEY - Client Side Abstract Along with the development of the computer, the security demand of the files is increasing. For the sake of encrypting the files of the users to prevent the act of stealing and improving the security of the documents, the security encryption of the documents have become an important issue. This design based on the combination of software and hardware to provide an easy and reliable approach to encrypt files. Password memorization is not necessary. The benefits of this design are easy to use and high stability. This project is coded by Delphi and base on Rockey2( a type of USB key). This paper describes the basic functions and methods to build a files encryption tools based on USB key. Details of implementation are also involved in this paper. Key words: USB; encryption lock; encrypt; decrypt nts 目录 论文总页数: 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 程序语言: delphi . 2 3.2 USB KEY . 3 3.2.1 USB KEY选型 . 3 3.2.2 Rockey2 加密锁的优点 . 3 3.2.3 Rockey2 加密锁要点说明 . 3 3.3 Rockey2 内存分配 . 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 nts 参考文献 . 21 附 录 . 22 致 谢 . 24 声 明 . 25 nts 第 1 页 共 25页 1 引言 1.1 课题背景 随着社会高科技,商品经济化突飞猛进的发展,计算机的应用已经普及到经济和社会生活的各个领域。长期以来人们使用各种加密技术以保证 计算机中 信息的安全, 防止被一些有不良用心的人看到或则破坏。在信息时代,信息可以帮助团体和个人,使他们受益,同时,信息也可以对他们构成威胁,造成破坏。在激烈竞争的社会中,大家都会想尽办法获取对方的资料。 因此 客观上 就需要有一种强有力的安全措施来保护我们的机密数据不被窃取和破坏。 1.2 国内外研究现状 当前对文件加密的方法多种多样,如果按照是否使用附加硬件来区分, 可以分为依赖特定硬件的加密方案和不依赖硬件的加密方案 。常用对文件加密的方法比如说: winrar文件加密在当今也比较流行。但是 winrar有其自身的不足。比如密码太长用户就不方便记忆,有可能会忘记,密码太短又会不安全。如果利用扩展硬件来作为加密和解密就可以有效避免上面的问题。因为它并不需要手工输入密码。密码是保存在扩展硬件当中的。 1.3 本设计研究的意义 如 果使用扩展硬件来进行文件的加密具有 访问速度快 、 可靠性高、保密性好、寿命长 等优点。但是以前的加密硬件成本较高,往往用在对安全要求相对较高的场合。随着硬件成本的降低,这种设备已经可以被个人所接受。 因此 本文描述了一种使用低成本 USB Key来辅助进行加密的文件加密系统,可以广泛的应用在个人信息的保护和企业重要文件保护当中。 1.4 本设计研究的方法 利用低成本的 USB Key来保存加密和解密过程当中的密码,并且实现一个简单的客户端工具。该工具符合大多用户操作 WinRAR 的习惯,方便的和 Windows Shell集成,可以方便的对文件进行加密和解密的操作,同时具有方便、易用、安全的特点。 2 需求分析 2.1 用户问题分析 现在的用户都希望能够拥有一种很方便、很快捷的方法去对自己的文件进行加密,操作方式就如 WINRAR 操作那样方便。并且加密安全强度高。对密码有比较完善的管理。因为现今一些对文件加密的方法在对文件进行加密时都需要用户手动输入密码。如果密码太简单,那么加密过后的文件安全强度不高,文件的安全性就得不到保障;密码太长又不方便用户记忆,并且随时可能忘记密码。所以nts 第 2 页 共 25页 用户希望能找到一种更好的加密方式。 2.2 本设计 应满足的需求 利用 USB KEY文件加密应尽量满足用户的需求,使用户对文件加密和解密的过程操作简单,使用方便。并且对密码也要有完善的管理。使用 USB KEY 可以在USB Key中保存密码,不在需要用户去手动输入密码,解决了用户去记忆复杂密码的过程。 利用 USB KEY 文件加密需要从两个方面去实现用户的需求,第一: KEY的管理。第二:客户端应用。 在 KEY的管理方面:主要包括 分类管理 、 客户添加 、 查看 、 编辑 这几个方面的功能。分类管理是指对锁里面保存的信息进行统一的归类,不同的信息保存在不同的地方。并且对锁里面的 相关信息进行记录,如果用户损坏或则丢失了锁,都能给用户提供一把相同的锁。 在客户端方面,应该尽量使操作简单,不麻烦,就类似 winrar 对文件加密的操作一样。这样才能被用户接受。这一方面主要完成文件的加密和解密操作。 USB KEY是一种带有 USB接口的加密锁。因为 USB KEY是一种比较简化型的加密锁,不需要任何驱动程序。并且它具有极高的加密强度,用硬件保存密码,用软件配合来使用。并且携带方便,简单易用,性能稳定。 2.3 本设计的保护技术 USB KEY 文件加密需要有一把硬件 KEY, USB KEY 是一种智 能型加密工具。它是一个安装在 USB 接口上的硬件电路,同时 它 有一套使用于各种语言的接口软件和工具软件。当被 USB KEY保护的软件运行时,程序向插在计算机上的 USB KEY发出查询命令, USB KEY 迅速计算查询并给出响应,正确的响应保证软件继续运行。如果没有 USB KEY,程序将不能运行, 它是将软硬件技术结合起来 。 这种加密强度比较高 。 如果 KEY丢失了,但是别人没有你的文件和算法,他也不能对文件解密,如果文件和算法被别人获得,但是他没有 KEY,同样他也不能对文件解密。它采用软、硬相结合的加密方式。 3 设计与实 现 3.1 程序语言: delphi Delphi 是 Borland 公司研制的新一代可视化开发工具,可在 各类 Windows环境下使用。它拥有一个可视化的集成开发环境 (IDE),采用面向对象的编程语言 ObjectPascal和基于部件的开发结构框架。 Delphi它提供了 100 多个可供使用的构件,利用这些部件,开发人员可以快速地构造出应用系统。开发人员也可以根据自己的需要修改部件或用 Delphi 本身编写自己的部件。主要特点如下: (1)直接编译生成可执行代码,编译速度快。由于 Delphi编译器采用了条件编译nts 第 3 页 共 25页 和选择链 接技术,使用它生成的执行文件更加精炼,运行速度更快。 (2)支持将存取规则分别交给客户机或服务器处理的两种方案,而且允许开发人员建立一个简单的部件或部件集合,封装起所有的规则,并独立于服务器和客户机,所有的数据转移通过这些部件来完成。这样,大大减少了对服务器的请求和网络上的数据传输量,提高了应用处理的速度。 (3)提供了许多快速方便的开发方法,使开发人员能用尽可能少的重复性工作完成各种不同的应用。 (4)具有可重用性和可扩展性。开发人员不必再对诸如标签、按钮及对话框等 Windows的常见部件进行编程。 (5)具有 强大的数据存取功能。 3.2 USB KEY 3.2.1 USB KEY 选型 利用 USB KEY 对文件进行加密和解密 时 ,都需要有 一把 USB KEY 硬件锁作为支配。在众多的 KEY 中选用 Rockey2加密锁 作为这个 USB KEY。因为 Rockey2加密锁 是 安全性 比较高的 免驱动的 USB 设备 ,同时售价低 。 采用的是传统 EPROM 结构。它制作容易,使用方便。而且它象 U盘一样方便携带,记录的空间也比较大 。适合各类人员对 文件 进行加密。 3.2.2 Rockey2 加密锁的优点 1: 兼容性好 Rockey2加密锁 具有 高度的透明性, 特别是对多个相同的 Rockey2 加密锁 也可以使用 USB HUB 并联在一起使用,相互之间不会有干扰。 2: 速度快 对于使用 Rockey2 加密锁 加密后的软件,其运行速度同 加密前的区别并不大, Rockey2加密锁 能够在很短的时间内处理完毕,保证用户程序的顺畅运行 3:使用简便 Rockey2加密锁 最大限度的简化了接口。可以在很短的时间内掌握它的使用方法,从而大大的节约了时间 3.2.3 Rockey2 加密锁要点说明 每一把 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 以后,才能够获得nts 第 4 页 共 25页 正确的 HID。 在用户生成 UID 的时候需要给出 1 个长度不超过 64 个字节的字符串作为种子,加密锁会根据这个种子生成 UID,这个生成算法是在加密锁内部完成的,而且是不可逆的,也就是说,只有生成者才知道什么样的种子能生成什么样的 UID,别的人即使知道 UID,也能够调用这个计算过程,但因为不知道种子是什么,是无法生成你的 UID 的。 另外在生成 UID 的时候,能够指定加密锁的 EPROM 是否是可写的,如果设定为不可写,整个 EPROM 处于写保护状 态 。 3.3 Rockey2 内存分配 Rockey2 加密 锁 总共有 2560 个字节, 为了便于管理,把 USB KEY 的存储空间 分配成 5 个段,每个段为 512 个字节 。在把每个段划分成 16 个 存储区,每个区 32 个字节。这样便于对 KEY 的存储空间进行统一的分配和管理。以后向 KEY的存储区里面写入的信息时,信息都会自动保存到相关的位置。 表 3-1 内存分配示意图 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 0 null sn Md5 un 1 2 3 4 NULL:空值,没使用 SN:密码 MD5:加密解密算法 UN:用户名 3.4 总体设计模块 图 3-1 USB文件加密总体模块图 总体模块 分为 KEY 的管理 和客户端两部分。 在 KEY 的管理方面我们需要把nts 第 5 页 共 25页 KEY里面记录的信息都保存到数据库里面,方便我们查询、修改、添加和删除 KEY里面的信息。对每把锁都进行管理,防止有同号锁出现。如果锁因为某种情况损坏或者是丢失了,那么可以通过数据库里面记录的信息复制一把相同的锁,这样就不用担心由于找不到 锁而不能对已加密的文件进行解密操作。对锁进行这样更加完善的管理。才能进一步保障被加密文件的安全,让用户才会更加放心的使用。客户端部分主要是完成操作 方面的 功能,我主要负责客户端的工作。客户端主要包括两方面 -文件加密和文件解密。对文件进行加密时,要利用 USB KEY 中的密码 对文件进行加密。 这就需要从 KEY里面读取出密码并利用该密码并文件进行加密。并且对该密码进行 MD5换算。得到密码的 MD5值,把这个值称为 XID。 对文件进行解密时, 先从 KEY里面读取出 密码 ,然后对密码进行 MD5换算,如果换算后的 XID与被加密 文件的 XID一样就可以成功对文件进行解密,否则不能对文件解密。 3.5 客户端逻辑流程 初始化 : 新的 USB KEY 并不能立即使用,对 USB KEY 进行初始化,才能对 KEY进行读写操作。初始化是利用种子生成 UID并且随机产生密码,并将随机生成的密码保存到 USB KEY的内存中。初始化成功后,就可以向 KEY里面写入用户名,用户名一旦写入就不可更改。 文件加密 : 在对文件加密时,我们需要从 USB KEY 中提取出密码,然后在利用该密码对文件进行加密。 文件解密 : 在对文件进行解密时,也需要先从 USB KEY 中读出密 码,然后在对密码进行MD5换算,在 把该 密码的 MD5值与被加密 文件 的 MD5值 进行对比,如果是 MD5值相同, 表明是由 同一把 Key加密 , 那么 可以 对文件 进行解密 操作 ,否则 Key不匹配 ,不能对文件解密 。 nts 第 6 页 共 25页 3.6 客户端 设计 逻辑流程 3.6.1 初始化和写用户名的设计流程图 图 3-2 初始化和写用户名的设计图 对 KEY初始化是因为当拿到新 KEY后,由于 KEY里面是空的,什么信息也没有,那样就不能通过 UID去获得正确的 HID。所以就需要对锁进行初始化,初始化的过程是在锁的内部完成的,并且是不可逆的。在初始化过程中利用种 子去生成 UID,并且把随机生成的占有 32 个字节的密码保存在 Key 当中,种子是自己定义的含有 64 个字节的字符串,只有自己才知道这个种子是什么,因为同样的种子生成的 UID是相同的。在初始化的过程中还会随机产生密码,就连自己都不知道这个密码是什么,生成这个密码后,把密码保存到 KEY中。初始化成功后,就需要向锁里面写入用户名,用户名不能为空,并且用户名也保存到 KEY中(用户名是在第一次使用 Key对文件加密的时候,由用户输入。客户端软件应该实现这个自动过程)。上面的操作都完成后,就可以利用 KEY 对文件进行加密和解密了 。 nts 第 7 页 共 25页 3.6.2 加密 设计流程图 图 3-3 加密设计图 在对文件进行加密时,首先要判断 USB KEY 在计算机上没有,如果没有连接到计算 机 上,就不能对文件进行加密,因为它 找不到 KEY, 不能从 KEY 中读取出密码。找到 KEY并 从 KEY中读取出密码后,就可以利用该密码对文件进行加密,在加密过程中 需 要对文件进行预处理。 文件预处理: 在对文件进行加密和解密的过程中,需要对文件进行预处理。判别出哪些文件需要加密,哪些文件不需要加密。哪些文件已经加密过。如果我正在使用 当前文件,对当前文件正在编辑,那么它就会直接跳过该文件,不会对该文件加密。它还要排除一些不需要的文件,比如链接文件,因为链接文件不是真实的文件,而是指向另外一个文件的“箭头”。或则是已经被加密过的文件。 排除一些不需要的文件后,它就可以利用 USB KEY中的密码对文件进行加密了,在加密过程中,我们还需要把密码的 MD5 值保存到被加密文件中,以便判断读 KEY 中的密码 是否找到USBKEY 没找到 KEY,失败 文件预处理 判断文件是否加密 已加密 ,加密失败 加密成功 N N Y Y 结束 结束 开始 nts 第 8 页 共 25页 这个文件是被哪个 Key加密的。 3.6.3 解密设计流程图 图 3-4 解 密设计图 文件进行解密的过程是文件 加密的一个逆过程。在对文件进行解密时, 首先也需 要判断 USB KEY 连接 在计算机上没有,如果没有连接到计算 机 上,就不能对文件进行 解 密,因为它不能从 KEY中读取出密码,从 KEY中读取出密码后, 在对密码经过 MD5换算,得到密码的 MD5值。最后拿密码的 MD5值与文件中的 MD5值进行对比,如果 MD5 值相同,就表明是同一把 KEY加密的文件,解密成功,否则解密失败。 Y 文件预处理 读 KEY 中的密码 是否找到USBKEY 没找到 KEY,失败 判断密码的 MD5 值是否和被加密文件中的 MD5 值相同 密码不同解密失败 解密成功 结束 结束 N Y N N 开始 nts 第 9 页 共 25页 4 应用与编码 4.1硬件的安装 利用 USB KEY 实现文件加密,当然不能少了 KEY, 将 Rockey2 加密锁 插入到和计算机的 USB 接口。某些时候,你可能 需要一条 USB 延长线来方便使用。一旦连接后, Rockey2加密锁 上的指示灯会被点亮。如果指示灯不亮,请检查你的 USB 接口或是 Rockey2 加密锁 。 在进行加密和解密之前,请确保 Rockey2 加密锁和计算机成功连接。 4.2控件的使用 在设计中用到了第三方控件 shell 控件和 flex 控件。 Shell 控件主要是起到文件关联作用。主要实施的是打开和查找文件。 USB KEY 在对文件进行加密和解密时都需要去关联文件。并且根据 SHELL 控件对应出不同的弹出菜单,单个文件或则是目录,因为 USB KEY 对文件进行加密 ,它只能对单个文件进行加密,不能对整个目录进行加密,它对目录加密也是对目录里面的单个文件进行加密,所以在对文件进行加密和解密时,都需要 SHELL 控件去找到文件的所在位置。 FLEX 控件是压缩控件,在对文件加密过后,需要 对文件进行压缩,并把用户名、文件名等信息写入到压缩文件中。对文件解密是先对被加密过的压缩文件解压,并从压缩文件中读取出相应的数据。 FLEX 保存数据是通过数组 array 来保存结果集合。 4.3进度框 因为在对文件进行加密和解密时都需要弹出一个进度框。有进度框才能让更清楚的知道文件加密和解密的详细 情况,在里面可以看见文件的总数,处理成功的文件的个数,处理警告和处理错误。在处理的过程中,它会自动判断文件是否已经加密,在解密文件过程中,如果该文件不是被加密的文件或则不是被该把KEY加密的文件,他都会给我们跳过那些文件。如果在中途取消对文件加密或则解密的操作,那么以前的操作还是成功的,只是对后面的操作不在进行。在加密解密过程中,会出现当前进程和总进程,里面的蓝色条纹在动说明正在进行操作。没动表明操作结束或失败。 4.4 初始化的应用与编码 初始化是本设计的一个重要过程,新的加密锁并不可以立即使用。但是加密锁 是用来对密码进行统一的管理,所以需要把密码写入并保存到加密锁里面。 首先定义一个种子,种子的长度不能超过 64个字节。它由数字和字母组成。SecureStr=f6a24cac3922c691ad2ce13b64d83c546f994f11e14ada832dd1b9e167e64464,定义种子之后,就可随机产生密码和生成 UID。 nts 第 10 页 共 25 页 在随机产生密码的过程中,定义一个函数 GenPass( ),并且把密码的范围限制在 32 个字节以内。然后需要随机生成密码,在随机生成密码的过程中调用Random(93)函数。目的是 让它产生一个从 1 到 92 之间的随机数。但是 ASC 表中的 32为空,为了防止在密码中出现空字符的情况,所以就取 32之后的值。 /具体实现代码为: begin Randomize; for I := 1 to 32 do begin Pass := Pass + Char(Random(93) + 33); end; Result := Pass; end; 随机密码产生后,在初始化过程中就利用种子生成 UID。在此过程中定义函数 InitRockey(ESeed: string; var UID: Cardinal; ReadOnly: boolean),对KEY进行初始化。然后利用该种子产生密码,产生密码后就直接写入 KEY里面。 /其关键代码为: Str := ESeed; If ReadOnly then Retcode :=RY2_GenUID(Handle,GUID,PChar(Str),ROCKEY2_ENABLE_WRITE_PROTECT) else Retcode :=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(),它回自动弹出询问信息,点击确定就可以完成这个过程。 nts 第 11 页 共 25 页 图 4-1 初试化窗口 4.5写用户名和密码的应用与编码 在初始化完成后, 就需要向锁里面写入信息了,写信息是写入用户名。用户名也被记录到 KEY 里面, 成功 向 Rockey2加密锁写入信息后,就可以对文件进行加密和解密 的操作 了。用户名写入后就不可更改,所以写入用户名的时候必须确认 你要正确的写入用户名。 需要设计一个提示输入信息的窗口。在页面的左上角插入一个图片,在设计面板上添加 3个 Label,并在里面写入需要的内容;在设计一个编辑框 Edit,在编辑框 里用户可以输入姓名。姓名的 Length(S)不能大于 32,超过这个范围,不能写入用户名。 if Length(S) 32 then begin MessageBox(0, 您输入的姓名大于 32 个字符,请重新输入! , 姓名过长!, MB_ICONWARNING or MB_OK); exit; 用户名里面的值不允许为空。 图 4-2 输入姓名窗口 成功的写入自己的姓名 -康桃义后,那么名字就储存到 Rockey2 加密锁里面了。而且名字不能更改。 在 CONST中自定义信息,对 NC赋值,以后在使用过程中直接调用 NC。不在nts 第 12 页 共 25 页 需要对其定义。 const NC=您输入的姓名是: %s+#13+#10+注意!一旦确认后,你将不能修改 ; 图 4-3姓名确认窗口 点击确定后显示确认窗口。 MessageBox(0, PChar(format(NC,S), 确认 , MB_ICONWARNING or MB_YESNO)=IDYES 写密码和写用户名也很重要,在以后的使用过程中就直接读取里面的信息,不需要在向 KEY里面写入信息。 写密码的过程中,定 义函数 WritePass( ),写密码前,还需要对 KEY 定义一个区段,不然密码写进去后会不知道存放在什么地方;自定义把密码存放在33-64这个存储区域内。然后直接把密码 Write 进去。 /部分代码为: if (not ReadSection(0, Str) then exit; if not OpenKey then exit; MD5Str := MD5DigestToStr(MD5String(Pass); Str := StuffString(Str, 33, 32, Pass); Str := StuffString(Str, 65, 32, Md5Str); Retcode := RY2_Write(HKey, 0, PChar(Str); if retcode 32 then OS := Copy(OS, 1, 32) else OS := O; OS:= Trim(OS); N:=32-Length(OS); for I:=1 to N do begin OS:=OS+#32; end; Str := StuffString(Str, 97, Length(OS), OS); Retcode := RY2_Write(HKey, 0, PChar(Str); 4.6文件加密应用与编码 在本设计中,加密解密的操作过程需要用到 shell 控件和 FLEX 控件,这两个都是 DPK 文件的控件包。由于 Delphi 7.0 默认情况下没有安装此控件,因此需要手动添加。首先需要添加该控件的路径,在 tools-environment options-library path 中加进该文件的路径。然后在 Delphi中 FileOpen(下拉列表框中选 *.dpk)install即可。此设计中要用到 shell的扩展, shell的扩展是指能够添加某种功能到 windows shell 的 com对象。 由于空间已经安装成功,那么在 delphi 中建立一个 shell module,在上面放置 contextmenu 控件、 flex 控件、 popupmenu 控件和 image。 Contextmenu 主要使用在当用户右键单击 文件或文件夹对象时,或在一个文件夹窗口中的背景处单击右键时被调用。把 Contextmenu指向 popupmenu。双击 popupmenu 后在里面添加加密 -文件和解密文件。 让 popupmenu 中的事件指向 imagelist。在 imagelist中添加所需要的图标。 Felx控件在事件中需要于 progress 进度框关联起来。 在实现文件加密的过程中 ,要对 KEY作一个判断,看 KEY是否 连接在计算机上或则是使用的 KEY 是否正确。利用 MessageBox()弹出此窗口提示错误信息。这样表明 KEY不可用。 图 4-4 初试化错误窗口 /其部分代码为: begin if (not ReadPass(Pass, HID, FileOwner) then begin nts 第 14 页 共 25 页 MessageBox(0, 系统无法找到你的 USB钥匙! + #13 + #10 + 请你检查 USB钥匙后再试。 , USB 钥匙初始化错误! , MB_ICONWARNING or MB_OK); exit; end; 在文件的加密过程中, 需要对文件进行预处理,因为要加密的文件 可 能 是一个文件 或则 多个文件;还可以是一个 目录 或者多个目录, 利用 USB KEY 文件加密它不能对目录进行加密,只能对文件进行加密。如果得到是一个目录文件GetFolderFiles,那么寻找文件的路径, CPath := Path + ;。找到符合条件的文件,然后把这些符合条件的文件添加到列表。然后在加密过程中对这些文件进行 递归查找 。 /其部分代码为: /添加符合条件的文件到列表 if (SearchRec.Attr and faDirectory) = 0) then begin AllFiles.Add(SPath); PForm.StatusBar.Panels1.Text := IntToStr(AllFiles.Count) + -个文件 ; Application.ProcessMessages; end; /递归查找 if (DirectoryExists(SPath) and (SearchRec.Name .) then GetFolderFiles(SPath); end; 在加密过程中,需要与进度窗口对应起来,在在进度框这里面设立 4 个过程, AddError, AddMsg, MsgCancel, MsgOk 它们没有返回值。 AddError 是表明出错的原因, AddMsg 表明当前处理的文件完成后直接对下一个文件在继续进行处理, MsgCancel 表明用户取消操作, MsgOk 表明处理成功。通过利用TShellModule.FlexFileProgress 使加密过程与 进度提示窗口 相联系起来, /文件处理中对弹出窗口的进度控制 。其主要代码为: procedure TShellModule.FlexFileProgress(Sender: TObject; FileName: string; Progress: Double; Operation: TFXCProcessOperation; ProgressPhase: TFXCProgressPhase; var Cancel: Boolean); begin PForm.CProcess.Position := Round(Progress); Application.ProcessMessages; end; nts 第 15 页 共 25 页 提示窗显示当前正在加密文件的进度,以及提示错误信息。错误信息用红色字体表示。加密完成给出一个统计信息。如果没有任何的错误或提示信息, 在加密完成后,该窗口自动关闭,否则需要单击“确定”来关闭该窗口。 图 4-5 文件加密窗口 在加密文件时弹出的进度框中分为当前进程和总进程。当前进程中是展示单个文件被加密的进度,总进程展示所有文件的加密进度。把所有文件的 记录条数赋值给总进程: PForm.AProcess.Max := AllFiles.Count,当前进程中处理完一个文件后要继续处理下一个文件,直到所有的文件处理完成。 PForm.AProcess.Position := PForm.AProcess.Position + 1 在加密过程中,通过压缩控件 FLEX,对文件进行压缩。并从 KEY 中取出密码,用此密码对文件进行加密。加密成功后,删除源文件,保留被压缩的文件。压缩文件里面保留用户名,文件名等信息。如果不能删除源文件,文
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
2:不支持迅雷下载,请使用浏览器下载
3:不支持QQ浏览器下载,请用其他浏览器
4:下载后的文档和图纸-无水印
5:文档经过压缩,下载后原文更清晰
|