论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

基于usb key文件加密工具--usb key管理系统(论文+程序)

3 copyright paper51.com

.2数据库设计

内容来自www.paper51.com

3

内容来自论文无忧网 www.paper51.com

.2. paper51.com

1 内容来自www.paper51.com

数据库需求分析

http://www.paper51.com

作为一个具有一定应用价值的管理系统,从本质上说其操作的对象为数据库中存储的具体记录。因此,不仅需要所使用的数据库系统具有比较高的稳定性、安全性下保持足够响应的能力,还要求设计者清楚需求,做出合理的数据库逻辑结构设计,以提高数据库的利用效率和减少数据冗余。

内容来自www.paper51.com

以这种思想作为设计策略,分析出系统的以下几项需求:

http://www.paper51.com

(1)管理员可以实现对用户的分类

http://www.paper51.com

(2)管理员可以实现对用户信息的添加,编辑和查看。

copyright paper51.com

(3)管理员可以初始化用户拥有的Rockey2 内容来自www.paper51.com

3

http://www.paper51.com

.2. 内容来自www.paper51.com

2

内容来自www.paper51.com

数据库实体关系设计 内容来自论文无忧网 www.paper51.com

通过以上的需求分析,设计出数据库的逻辑结构——E-R图,从这种逻辑结构有可以建立数据库的物理结构即表结构。根据需求设计出三个数据表,分别是:客户信息表(clients),key表(keys),分类表(groups)其结构及关系如图1所示。

内容来自www.paper51.com

http://www.paper51.com

图4客户与KEY关系图 内容来自www.paper51.com

图3客户与客户分类关系图

paper51.com

客户分类 内容来自www.paper51.com

客  户

copyright paper51.com

3

http://www.paper51.com

.2.

内容来自论文无忧网 www.paper51.com

3

内容来自www.paper51.com

数据库逻辑设计

内容来自论文无忧网 www.paper51.com

确定了数据库的逻辑关系和数据结构之后,进一步将以上所述的四个数据表由概念结构转化为数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。

http://www.paper51.com

表3所示为客户信息表(clients),记录了管理员所管理的客户的相关信息。

http://www.paper51.com

3 clients 内容来自论文无忧网 www.paper51.com

列名 copyright paper51.com

数据类型

copyright paper51.com

长度

内容来自www.paper51.com

CGID(PK) 内容来自论文无忧网 www.paper51.com

INTEGER 内容来自论文无忧网 www.paper51.com

4

http://www.paper51.com

CName

内容来自www.paper51.com

STRING copyright paper51.com

50 copyright paper51.com

CAddress 内容来自www.paper51.com

STRING

http://www.paper51.com

50 内容来自www.paper51.com

CContact

内容来自论文无忧网 www.paper51.com

STRING 内容来自www.paper51.com

20 paper51.com

CPhone

http://www.paper51.com

STRING

http://www.paper51.com

100 内容来自论文无忧网 www.paper51.com

CMobile paper51.com

STRING 内容来自论文无忧网 www.paper51.com

40

http://www.paper51.com

CFax 内容来自论文无忧网 www.paper51.com

STRING

copyright paper51.com

40 内容来自www.paper51.com

CWeb copyright paper51.com

STRING

http://www.paper51.com

25

copyright paper51.com

CEmail copyright paper51.com

STRING paper51.com

40 copyright paper51.com

表4所示为分类表(groups),记录管理员按照什么方式进行分类。 http://www.paper51.com

表4 groups 内容来自论文无忧网 www.paper51.com

列名

paper51.com

数据类型 paper51.com

长度

http://www.paper51.com

GID(PK) 内容来自论文无忧网 www.paper51.com

AUTOINC

paper51.com

4

内容来自论文无忧网 www.paper51.com

GPID

http://www.paper51.com

STRING

http://www.paper51.com

20 内容来自论文无忧网 www.paper51.com

GName copyright paper51.com

STRING http://www.paper51.com

40

http://www.paper51.com

表5所示为keys表,记录了客户所拥有的所有Rockey2的信息,包括对文件加密解密的密码以及硬件ID号。 内容来自www.paper51.com

表5 keys

copyright paper51.com

列名

copyright paper51.com

数据类型 内容来自论文无忧网 www.paper51.com

长度

copyright paper51.com

KID(PK) paper51.com

AUTOINC copyright paper51.com

4

paper51.com

KCID copyright paper51.com

STRING paper51.com

20

copyright paper51.com

KHID

内容来自论文无忧网 www.paper51.com

STRING

内容来自www.paper51.com

40

内容来自www.paper51.com

KPass

内容来自www.paper51.com

STRING 内容来自www.paper51.com

32

内容来自论文无忧网 www.paper51.com

KOther

paper51.com

STRING

内容来自www.paper51.com

20 http://www.paper51.com

4应用以及编码

http://www.paper51.com

4.1初始化以及写密码的过程的应用与编码

copyright paper51.com

初始化是本设计的一个重要过程。通过加密锁的内存分配可以知道,加密锁里面存储有4个数据:NULL(辨别是否初始化);SN(密码);MD5(密码的MD5值);UN(用户名)。一把新的加密锁里面的数据都是空的,必须向里面写入数据才可以使用。 copyright paper51.com

首先定义一个种子,种子的长度不能超过64个字节。它由数字和字母组成。SecureStr=f6a24cac3922c691ad2ce13b64d83c546f994f11e14ada832dd1b9e167e64464,定义种子之后,就可生成UID = '1921722780'。这个UID是唯一的,也就是说以后所有初始化的USB key都有相同的UID。

内容来自www.paper51.com

在随机产生密码的过程中,定义一个函数GenPass(),并且把密码的范围限制在32个字节以内。然后需要随机生成密码,在随机生成密码的过程中调用Random(93)函数。目的是让它产生一个从1到92之间的随机数。但是ASC表中的32为空,所以就取32之后的值。 内容来自论文无忧网 www.paper51.com

//具体实现代码为: paper51.com

begin

内容来自论文无忧网 www.paper51.com

  Randomize; http://www.paper51.com

  for I := 1 to 32 do begin http://www.paper51.com

    Pass := Pass +Char(Random(93) + 33);

内容来自www.paper51.com

  end; http://www.paper51.com

  Result := Pass; 内容来自www.paper51.com

end;

内容来自www.paper51.com

随机密码产生后,在初始化过程中就利用种子生成UID。在此过程中定义函数InitRockey(ESeed: string; var UID: Cardinal; ReadOnly: boolean),对KEY进行初始化。然后利用该UID产生密码,产生密码后就直接写入KEY里面。 paper51.com

//其关键代码为:

http://www.paper51.com

Str := ESeed; 内容来自论文无忧网 www.paper51.com

If ReadOnly

paper51.com

 then Retcode:=RY2_GenUID(Handle,GUID,PChar(Str),ROCKEY2_ENABLE_WRITE_PROTECT)

内容来自论文无忧网 www.paper51.com

  else Retcode:=RY2_GenUID(Handle,GUID,PChar(Str),ROCKEY2_DISABLE_WRITE_PROTECT);

http://www.paper51.com

  ………………省略………………… 内容来自www.paper51.com

  UID := GUID; 内容来自论文无忧网 www.paper51.com

产生的GUID的值就是UID的值。最后在对锁进行初始化时,需要锁给出一个询问信息。InitRockyQuery(),询问是否对锁进行初始化。 paper51.com

MessageDlg('初始化 Rockey?',mtConfirmation, [mbYes, mbNo], 0) = 6。

http://www.paper51.com

Confirmation在这里使用是在询问框中显示YES或则NO这两个确认按钮。 copyright paper51.com

写密码的过程中,定义函数WritePass( ),写密码前,还需要对KEY定义一个区段,不然密码写进去后会不知道存放在什么地方;自定义把密码存放在33-64这个存储区域内。然后直接把密码Write进去。

http://www.paper51.com

//部分代码为:

copyright paper51.com

if (not ReadSection(0, Str)) then exit;

http://www.paper51.com

 if not OpenKey then exit;

内容来自论文无忧网 www.paper51.com

MD5Str :=MD5DigestToStr(MD5String(Pass));

内容来自www.paper51.com

 Str := StuffString(Str, 33, 32, Pass); paper51.com

 Str := StuffString(Str, 65, 32, Md5Str); paper51.com

 Retcode := RY2_Write(HKey, 0, PChar(Str));

http://www.paper51.com

 if retcode < 0 then copyright paper51.com

 begin paper51.com

    CloseKey; copyright paper51.com

    exit; 内容来自www.paper51.com

 end; paper51.com

在这里需要说明一下加密锁是如何来识别是用该加密锁来加密的文件。可以用来作为识别的有三个元素,包括加密锁的硬件ID,对文件加密的密码,再就是对文件加密的密码的MD5值。下面我们来比较一下这三个元素哪个更加适合:首先用加密锁的硬件ID,这种方法的不足就是每一把硬件ID的值的是不同的,如果加密锁遗失,将不能打开文件。其次用对文件加密的密码,这种方法的不足就是密码是明文,不适合用来识别。最后一种就是用对文件加密的密码的MD5值,由于MD5算法是现在一种相对比较安全的一种加密算法,很难被破解。因此我们采用了最后一种方法来识别它们。 内容来自论文无忧网 www.paper51.com

4.2管理界面的设计 内容来自www.paper51.com

4.2.1管理主界面设计

paper51.com

内容来自www.paper51.com

图5锁管理界面 内容来自论文无忧网 www.paper51.com

4.2. http://www.paper51.com

2

copyright paper51.com

分类管理模块的设计 内容来自www.paper51.com

内容来自www.paper51.com

图6添加客户界面 copyright paper51.com

管理员可以按照不同的分类方式进行分类,便于对客户的管理。 http://www.paper51.com

具体代码如下:

paper51.com

procedure TfMain.NewGroupExecute(Sender:TObject);

paper51.com

var 内容来自www.paper51.com

 SNode: TTreeNode; 内容来自论文无忧网 www.paper51.com

 PID: integer;

copyright paper51.com

begin

内容来自论文无忧网 www.paper51.com

 SNode := GroupsTree.Selected; 内容来自www.paper51.com

 if Assigned(SNode) then begin

http://www.paper51.com

    PID :=UnitDM.RockyDM.TGroups.FieldByName('GPID').AsInteger; http://www.paper51.com

   UnitDM.RockyDM.TGroups.Append;

copyright paper51.com

    UnitDM.RockyDM.TGroups.FieldByName('GPID').AsInteger:= PID; http://www.paper51.com

   UnitDM.RockyDM.TGroups.FieldByName('GName').AsString := '新分类';

paper51.com

    UnitDM.RockyDM.TGroups.Post; copyright paper51.com

 end;

paper51.com

end;

paper51.com

------分隔线----------------------------
联系方式