




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计USB KEY 文件加密系统的设计与实现(终稿) USB KEY文件加密系统的设计与实现摘要随着信息技术的飞速发展?文件的安全性越来越被重视。 为了实现对个人重要信息的加密?防止别人窃取个人的文件信息?提高文件的安全性?文件加密成为了一个重要的课题。 本设计为了解决用户记忆烦琐的密码问题?以软、硬件相结合的方式?实现了文件加密和解密的功能。 具有操作简单、稳定性高、兼容性好、速度快等特点。 该系统使用Rockey2加密锁?用Delphi进行开发。 本系统分为两部分?一部分是文件的加密解密?另一部分是加密锁的管理工具。 后一部分由本人完成。 本文主要介绍了USB KEY文件加密工具的总体设计和详细设计思路以及应用和编码。 在总体设计中主要介绍了设计该工具的需求分析、系统的选型、以及Rockey2加密锁的介绍。 在详细设计中主要介绍了系统功能的分析、Rockey2加密锁的内存分配、以及数据库的相关设计。 在应用和编码部分主要介绍了硬件的安装?初始化、写用户名和密码的应用和编码?管理界面的设计以及数据库的相关操作。 最后介绍了系统的不足以及改进方案。 长期以来人们使用各种加密技术以保证计算机中信息的安全?防止被一些有不良用心的人看到或则破坏。 在信息时代?信息可以帮助团体和个人?使他们受益?同时?信息也可以对他们构成威胁?造成破坏。 在激烈竞争的社会中?大家都会想尽办法获取对方的资料。 因此客观上就需要有一种强有力的安全措施来保护我们的机密数据不被窃取和破坏。 1.2国内外研究现状在日常的应用中?面对很多熟知的压缩软件和加密软件?例如WinRaR、WinZip等?这些软件也逐渐成为了当前大家默认的业界应用标准。 然而?也正是它们的通用性和普遍性使它们缺乏个性化的应用特色?采用口令保护的方式对压缩文件进行加密也是形同虚设?有许多破解软件都能够轻而易举地获取口令。 面对WinRaR和WinZip自身的不足。 比如密码太长用户就不方便记忆?有可能会忘记?密码太短又会不安全。 如果利用扩展硬件?USB Key?来进行文件的加密和解密?那么就可以有效避免上面的问题。 因此这样就不需要手工来进行密码的输入?而将加密和解密的密码是保存在扩展硬件当中的。 1.3本设计研究的意义如果使用硬件来进行文件的加密具有访问速度快、可靠性高、保密性好、寿命长等优点。 但是以前加密硬件成本较高?往往用在对安全要求相对较高的场合。 随着硬件成本的降低?这种设备已经可以被个人所接受。 因此本文描述了一种使用低成本USB Key来辅助进行加密的文件加密系统?可以广泛的应用在个人信息的保护和企业重要文件保护当中。 1.4本设计研究的方法本设计分为两个部分?由两个人共同完成。 一部分是利用低成本的USB Key来做一个对文件的加密工具?一部分是利用Delphi编写的一个相对简单的管理软件来实现对USB Key的管理。 加密工具符合大多用户操作WinRAR的习惯?可以方便的对文件进行加密和解密的操作?同时具有方便、易用、安全的特点。 管理软件能对用户以及USB KEY进行简单的管理?当用户拥有的USB KEY遗失时可以有效的复制一把USB KEY?同时管理界面简单、易用的特点。 2USB KEY文件加密工具总体设计2.1USB KEY文件加密工具需求分析当前软件加密方法多种多样?基本上来说可以分为依赖特定硬件的加密方案和不依赖硬件的加密方案。 依赖特定硬件的加密方案?软盘加密、卡加密、光盘加密。 软盘加密和卡加密曾经作为一种很好的加密工具?现在已经很少使用了?这是因为用户很少使用软驱?那么软盘加密技术也就没怎么使用。 90年代初?各种各样的汉卡涌现出来?并轰动一时?而现在也很少再使用。 光盘加密是一种新的加密方式。 既然有软盘加密成功在先?为什么不能有光盘加密呢?但实际操作上确实是有一些问题的?因为光盘有ISO9660标准协议规定?其可控制性比软盘还要严格?想找出一种只能运行而不能复制的方式确实很困难。 不依赖硬件的加密方案?利用WinRAR、WinZip等压缩软件来进行文件的加密。 利用压缩软件来实现对文件的加密是现在比较流行的一种方式?但是其有很多的不足?例如向密码太长用户就不方便记忆?有可能会忘记?密码太短又会不安全。 并且现在网上有很多的针对WinRAR、WinZip的破解工具?利用破解工具很容易就把用户的密码给破解了?这样用户对文件的加密就如同虚设。 本设计就是利用软件和硬件相结合的方式来实现对文件进行加密。 这种方式就是使用软件加密锁?USB KEY?来实现。 也就是一个插在计算机USB接口上火柴盒大小的设备?国内俗称“加密狗”。 在加密锁内部存有一定的数据和算法?计算机可以与之通讯来获得其中的数据?或通过加密锁进行某种计算。 软件无法离开加密锁而运行。 由于它不像卡加密那样需要打开计算机的机箱来安装?但又像加密卡那样可以随时访问?而且访问速度很快?所以一推出就受到软件开发者们的青睐。 目前?所有的加密锁都提供了可编程的接口。 用户可以控制加密锁中的内容?在程序中通过加密锁的接口任意访问加密锁。 利用USB KEY对文件加密应尽量满足用户的需求?使用户对文件加密和解密的过程操作简单?使用方便。 并且对密码也要有完善的管理。 使用USB KEY可以在USB Key中保存密码?不在需要用户去手动输入密码?解决了用户去记忆复杂密码的过程。 鉴于越来越多的人使用USB KEY来保护自己的个人文件。 但是许多的意外事件可能会降临?一旦USB KEY被遗失?那么后果将是巨大的。 所以开发一个管理性的软件记录拥有USB KEY的用户相关信息、USB KEY的硬件ID、以及对文件加密的密码是十分必要且有效的方法。 利用USB KEY文件加密需要从两个方面去实现用户的需求?第一?USB KEY的管理。 第二?客户端应用。 在USB KEY的管理方面?主要包括分类管理、客户添加、查看、?初始化Rockey2这几个方面的功能。 分类管理是对用户按什么方式进行分类管理?比如按时间?地区等?由管理员自己设定分类方式?这样便于方便管理用户?管理员实现对用户的添加?查看?管理员对USB KEY进行初始化?一把新的USB KEY第一次使用?必须进行初始化?初始化也就是根据种子生成对文件加密的密钥?以及UID?并且还要记录USB KEY的信息?包括对文件加密的密钥?硬件ID等?到管理软件中?以便以后对USB KEY进行复制。 在客户端方面?应该尽量使操作简单?不麻烦?就类似winrar对文件加密的操作一样。 这样才能被用户接受。 这一方面主要完成文件的加密和解密操作。 其系统结构图如下?图1系统整体结构图USB KEY文件加密系统的客户端主要实现对文件的加密和解密?其管理系统主USB Key文件加密系统文件加密解密管理系统要实现对对用户以及拥有的USB Key信息进行操作管理。 2.2系统选型2.2.1设计语言?Delphi Delphi是Borland公司研制的新一代可视化开发工具?可在Windows3.x、Windows 95、Windows NT等环境下使用。 它拥有一个可视化的集成开发环境(IDE)?采用面向对象的编程语言Object Pascal和基于部件的开发结构框架。 Delphi它提供了100多个可供使用的构件?利用这些部件?开发人员可以快速地构造出应用系统。 开发人员也可以根据自己的需要修改部件或用Delphi本身编写自己的部件。 主要特点如下? (1)直接编译生成可执行代码?编译速度快。 (2)支持将存取规则分别交给客户机或服务器处理的两种方案?而且允许开发人员建立一个简单的部件或部件集合?封装起所有的规则?并独立于服务器和客户机?所有的数据转移通过这些部件来完成。 (3)提供了许多快速方便的开发方法?使开发人员能用尽可能少的重复性工作完成各种不同的应用。 利用项目模板和专家生成器可以很快建立项目的构架?然后根据用户的实际需要逐步完善。 (4)具有可重用性和可扩展性。 (5)具有强大的数据存取功能。 它的数据处理工具BDE(Borland DatabaseEngine)是一个标准的中介软件层?可以用来处理当前流行的数据格式?如x Base、Paradox等?也可以通过BDE的SQL Link直接与Sybase、SQL Server、Informix、Oracle等大型数据库连接。 Delphi既可用于开发系统软件?也适合于应用软件的开发。 从上可以看出Delphi在开发数据库性质的管理软件十分方便和快捷。 2.2.2数据库的选择USB key文件加密管理系统的数据库选用的是Absolute Database。 Absolute Database是Borland数据库引擎(BDE)的替代品。 具有高速?健壮?易用的特点。 使用Absolute Database不需要特别的安装和配置。 该系统在连接数据库用到了以下几个数据库引擎组件?如表1所示?表1组件表组件中文名用途TDataSource数据源组件作为数据集组件?TTable?TQuery?TStoredProc?与数据控制组件?TDBGrid?TDBEdit?之间传送数据的通道。 TTable数据表组件通过BDE存取磁盘上数据库表?再为TDataSource提供数据源?使得数据控制组件能够有效地从TTable中访问数据并能显示和其中的数据。 TQuery数据查询组件利用SQL语言访问数据库表中的数据?再为TDataSource提供数据源?实现数据控制组件对数据库的访问。 TDatabase数据库组件当应用程序要登录到一个远程服务器上的数据库时?可以用该组件来建立应用程序与数据库永久性的连接。 2.2.3开发工具的选择现在有许多的第三方控件支持Delphi,USB key文件加密管理系统使用了Dev Express DB Tress和Dev Express Quantum Grid这两个控件1)Express DBTress?强大的树型结构列表的控件。 Express DBTress为VCL开发者们提供了一个最高级的树形列表技术。 ExpressDBTress是一个功能强大?已打包的组件库?它可以帮助你创建杀手级软件?为你的最终用户提供难以置信的功能?只需要很少的代码就可以实现用户的需求。 2)ExpressQuantumGrid:表格控件。 它是树形列表控件和数据控件的控件库?适合于Delphi和C+Builder平台下的应用开发。 该组件是基于底层开发出来的?而且是纯粹的本地化的可视控件库?特别设计用来开发引人注目的应用程序?将令人难以置信的特性传递给终端用户?从而使你的程序产品在激烈的竞争中取得优先地位?而实现这一切不需要编写简单的一行代码。 2.2.4开发硬件的选择利用USB KEY对文件进行加密和解密时?都需要有一把USB KEY硬件锁作为支配。 在众多的KEY中选用Rockey2加密锁作为这个USB KEY。 因为Rockey2加密锁是安全性比较高的免驱动的USB设备?同时售价低。 采用的是传统EPROM结构。 它制作容易?使用方便。 而且它方便携带?记录的空间也比较大。 适合各类人员对文件进行加密。 利用Rockey2已经可以满足该设计的需求。 2.3ROCKEY2加密锁2.3.1Rockey2加密锁简介Rockey2加密锁是为软件开发商提供的一种智能型的软件加密工具?它包含一个安装在计算机并行口或USB口上的硬件?及一套适用于各种语言的接口软件和工具软件。 加密狗基于硬件加密技术?其目的是通过对软件与数据的加密防止知识产权被非法使用。 Rockey2加密锁是一种比较简化型的加密锁。 适合各类人员对信息进行加密。 用户可以对自己电脑里面的私人信息进行加密?公司可以对内部机密信息进行加密等等。 Rockey2加密锁是一款可以支持软件保护应用和身份认证应用的多功能?免驱动的USB设备。 2.3.2Rockey2加密锁特点其特点如下?a)USB无驱设备b)全球唯一硬件ID c)提供外壳加密工具d)2.5K用户使用空间e)标准USB1.1设备?支持USB2.0接口f)提供多种软件接口?Delphi、Foxpro、Java、PB、VB、VC、VS.NET等2.3.3Rockey2加密锁优点Rockey2具有以下一些优点? (1)兼容性好它具有高度的透明性?特别是对多个相同的Rockey2加密锁也可以使用USB HUB并联在一起使用?相互之间不会有干扰。 (2)速度快对于使用Rockey2加密锁加密后的软件?其运行速度同加密前的区别并不大?它能够在很短的时间内处理完毕?保证用户程序的顺畅运行。 (3)使用简便Rockey2加密锁最大限度的简化了接口。 可以在很短的时间内掌握它的使用方法?从而大大的节约了时间。 2.3.4Rockey2加密锁要点说明每一把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处于写保护状态。 3USB KEY文件加密工具系统详细设计3.1系统功能模块分析总体模块分为KEY的管理和客户端两部分。 在KEY的管理方面我们需要把KEY里面记录的信息都保存到数据库里面?方便我们查询、修改、添加和删除KEY里面的信息。 对每把锁都进行管理?防止有同号锁出现。 如果加密锁因为某种情况损坏或者是丢失了?那么可以通过数据库里面记录的信息复制一把相同的锁?这样就不用担心由于找不到锁而不能对已加密的文件进行解密操作。 对加密锁进行更加完善的管理?才能进一步保障被加密文件的安全?让用户才会更加放心的使用。 客户端部分主要是完成操作方面的功能。 客户端主要包括两方面-文件加密和文件解密。 对文件进行加密时?要利用USB KEY中的密码对文件进行加密。 这就需要从KEY里面读取出密码并利用该密码对文件进行加密。 并且对该密码进行MD5换算。 得到密码的MD5值?把这个值称为XID。 对文件进行解密时?先从KEY里面读取出密码?然后对密码进行MD5换算?如果换算后的XID与被加密文件的XID一样就可以成功对文件进行解密?否则不能对文件解密。 该设计主要是管理员对用户以及拥有的USB Key信息进行操作管理?功能说明如下?1?分类管理?设置创建新分类和子分类。 通过按地区、时间等对用户进行分类?以方便进行管理。 2?客户信息管理?实现对客户信息的添加、删除和修改。 也就是系统中的添加、和查看客户模块。 3?Rockey2的初始化?实现对Rockey2的初始化?通过种子生成对文件加密的密钥?还有UID。 初始化过后并把Rockey2的相关信息?包括密钥和硬件ID?记录到管理系统中。 系统功能图如下?图2系统功能结构图USB文件加密系统KEY的管理客户端客户分类管理添加客户信息客户信息查看客户信息KEY的初始化加密解密3.2ROCKEY2加密锁内存分配Rockey2加密锁总共有2560个字节?为了便于管理?把USBKEY的存储空间分配成5个段?每个段为512个字节。 在把每个段划分成16个存储区?每个区32个字节。 这样便于对KEY的存储空间进行统一的分配和管理。 以后向KEY的存储区里面写入的信息时?信息都会自动保存到相关的位置。 表2内存分配示意图123456789101112131415160null snMd5un12341)NULL?空值?没使用2)SN?密码3)MD5?密码的MD5值?用于识别用户4)UN?用户名3.2数据库设计3.2.1数据库需求分析作为一个具有一定应用价值的管理系统?从本质上说其操作的对象为数据库中存储的具体记录。 因此?不仅需要所使用的数据库系统具有比较高的稳定性、安全性下保持足够响应的能力?还要求设计者清楚需求?做出合理的数据库逻辑结构设计?以提高数据库的利用效率和减少数据冗余。 以这种思想作为设计策略?分析出系统的以下几项需求? (1)管理员可以实现对用户的分类 (2)管理员可以实现对用户信息的添加?和查看。 (3)管理员可以初始化用户拥有的Rockey23.2.2数据库实体关系设计通过以上的需求分析?设计出数据库的逻辑结构E?R图?从这种逻辑结构有可以建立数据库的物理结构即表结构。 根据需求设计出三个数据表?分别是?客户信息表(clients)?key表(keys)?分类表(groups)其结构及关系如图1所示。 3.2.3数据库逻辑设计确定了数据库的逻辑关系和数据结构之后?进一步将以上所述的四个数据表由概念结构转化为数据库系统所支持的实际数据模型?也就是数据库的逻辑结构。 客户KEY包含客户分类客户图3客户与客户分类关系图图4客户与KEY关系图表3所示为客户信息表?clients?记录了管理员所管理的客户的相关信息。 表3clients列名数据类型长度CGID(PK)INTEGER4ame STRING50CAddress STRING50CContact STRING20CPhone STRING100CMobile STRING40CFax STRING40CWeb STRING25CEmail STRING40表4所示为分类表?groups?,记录管理员按照什么方式进行分类。 表4groups列名数据类型长度GID(PK)AUTOINC4GPID STRING20GName STRING40表5所示为keys表,记录了客户所拥有的所有Rockey2的信息?包括对文件加密解密的密码以及硬件ID号。 表5keys列名数据类型长度KID(PK)AUTOINC4KCID STRING20KHID STRING40KPass STRING32KOther STRING204应用以及编码4.1初始化以及写密码的过程的应用与编码4.2管理界面的设计4.2.1管理主界面设计图5锁管理界面4.2.2分类管理模块的设计图6添加客户界面管理员可以按照不同的分类方式进行分类?便于对客户的管理。 具体代码如下?procedure TfMain.NewGroupExecute(Sender:TObject);var SNode:TTreeNode;PID:integer;begin SNode:=GroupsTree.Selected;if Assigned(SNode)then beginPID:=UnitDM.RockyDM.TGroups.FieldByName(GPID).AsInteger;UnitDM.RockyDM.TGroups.Append;UnitDM.RockyDM.TGroups.FieldByName(GPID).AsInteger:=PID;UnitDM.RockyDM.TGroups.FieldByName(GName).AsString:=新分类;UnitDM.RockyDM.TGroups.Post;end;end;4.2.3添加客户模块的设计图7添加客户界面在分类中添加一个客户?并写入数据库?用到了Append方法?该方法是添加一条新记录到数据集中。 UnitDm.RockyDM.TClients.Append也就是将客户信息记录到数据库的clients表当中。 具体代码如下?function AddClient():Boolean;begin Result:=True;with TfClientEdit.Create(nil)do beginCaption:=添加客户;UnitDm.RockyDM.TClients.Append;Module:=1;ShowModal;end;end;4.2.4客户模块的设计4.2.5查看客户模块的设计图9客户查看界面该窗口只能查看不能修改客户信息?所以定义BC.Visible:=False。 具体代码如下?function ViewClient():Boolean;begin Result:=True;with TfClientEdit.Create(nil)do beginCaption:=客户;BC.Visible:=False;Module:=3;ShowModal;end;end;4.2.6Rockey初始化模块图10初始化界面当Rockey2插入电脑时要读取它的密码和硬件ID以及客户的用户名?如果它没有初始化则Rockey2的硬件ID为零?那么就需要进行初始化?写入密码?以及用户名。 如果Rockey2的硬件ID不为零表示该Rockey2已经被初始化?就不再需要进行初始化了?则显示初始化失败。 图11初始化失败初始化以后?还需要将Rockey2的信息写入对应客户的资料中去?就是将Rockey2的用户名?密码?以及硬件ID号记录下来。 procedure TfMain.ReadRockeyExecute(Sender:TObject);var GID,CID,KID:integer;Pass,HID,Owner,APass:string;begin ifnot ReadPass(Pass,HID,Owner)then begin/钥匙没有初始化或者不是为rockey提供的钥匙if HID=0then begin/钥匙没有初始化if InitRockyQuery(False)then begin/写入密码ShowMessage(成功初始化?);APass:=GenPass;if WritePass(APass)then ShowMessage(密码写入成功)else ShowMessage(密码写入失败);end elseShowMessage(初始化失败?);exit;end;if HID0then begin/不是rockey的钥匙ShowMessage(该钥匙已经初始化?但是好像不是为rockey使用的?);exit;end;end elsebegin ifRockyDM.FindKey(HID,GID,CID,KID)then beginRockyDM.TGroups.Locate(GID,GID,loCaseInsensitive);RockyDM.TClients.Locate(CID,CID,loCaseInsensitive);RockyDM.TKeys.Locate(KHID,HID,loCaseInsensitive);end elsebegin/数据库中没有记录?添加到数据库RockyDM.TKeys.Append;RockyDm.TKeys.FieldValuesKHID:=HID;RockyDm.TKeys.FieldValuesKPass:=Pass;RockyDM.TKeys.Post;ShowMessage(数据添加成功);end;end;end;4.3数据库操作下面介绍如何找到客户对应的Rockey2加密锁,首先要定义2个常量Find_Client_By_HID?Find_Group_By_CID。 这两个常量定义了2条SQL语句。 Find_Client_By_HID=Select KID,KCID fromKeys WhereKHID=%s?它定义了从keys表中查询硬件ID等于%s的客户信息。 Find_Group_By_CID=Select CGIDfrom ClientsWhere CID=%d?它定义了从clients表中查询客户ID等于%d的客户在哪个分类当中。 当客户的硬件ID及hid与定义的常量也就是定义的查询语句想匹配的时候就将其硬件id号添加到数据库?以便以后Rockey2丢失的时候?查到其丢失的加密锁?然后复制一把与以前的加密锁加密密码一样的锁。 其代码如下?function TRockyDM.FindKey(HID:string;var GID,CID,KID:integer):boolean;var QS:string;begin Result:=False;QRockey.Close;QS:=Format(Find_Client_By_HID,HID);QRockey.SQL.Clear;QRockey.SQL.Add(QS);QRockey.Open;if QRockey.Rec
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智慧水务行业当前竞争格局与未来发展趋势分析报告
- 2025年消费金融行业当前竞争格局与未来发展趋势分析报告
- 支护工操作规程课件
- 2024年人工智能及应用公需科目试题及答案
- (2025)物业管理考试题库及参考答案
- 2025年中华护理学会团标标准解读试题(真题及答案)
- 2024年网络数据安全维护知识考试题库与答案
- 2025年浙医二院抗菌药物处方权培训考试试题及答案(内科卷)
- 2024压力性损伤考试题及答案
- 摄影课件的模式
- 2025年版二级建造师《机电工程》考试真题(题后附权威解析)
- 医院收费窗口培训
- 《中国高血压临床实践指南》
- QAZDP 01-2018 焊接钢管规范
- 口腔颌面部血管瘤
- 煤矿磅房安全管理制度
- 2025年高考四川卷物理高考真题+解析(参考版)
- 2025松材线虫病枯死松树无人机监测技术规范
- DB65T 8001-2019 二次供水工程技术标准
- 物流公司运营管理方案
- T/CECS 10400-2024固废基胶凝材料
评论
0/150
提交评论