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

基于usb key的文件加密工具--客户端的实现(论文+程序)

4.5写用户名和密码的应用与编码

在初始化完成后,就需要向锁里面写入信息了,写信息是写入用户名。用户名也被记录到KEY里面,成功向Rockey2加密锁写入信息后,就可以对文件进行加密和解密的操作了。用户名写入后就不可更改,所以写入用户名的时候必须确认你要正确的写入用户名。 http://www.paper51.com

需要设计一个提示输入信息的窗口。在页面的左上角插入一个图片,在设计面板上添加3个Label,并在里面写入需要的内容;在设计一个编辑框Edit,在编辑框里用户可以输入姓名。姓名的Length(S)不能大于32,超过这个范围,不能写入用户名。

copyright paper51.com

if Length(S) > 32 thenbegin copyright paper51.com

    MessageBox(0, '您输入的姓名大于32个字符,请重新输入!', '姓名过长!', MB_ICONWARNING or MB_OK);

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

    exit;

http://www.paper51.com

用户名里面的值不允许为空。 内容来自www.paper51.com

copyright paper51.com

图4-2 输入姓名窗口 http://www.paper51.com

成功的写入自己的姓名---康桃义后,那么名字就储存到Rockey2加密锁里面了。而且名字不能更改。

http://www.paper51.com

在CONST中自定义信息,对NC赋值,以后在使用过程中直接调用NC。不在需要对其定义。 内容来自www.paper51.com

const

paper51.com

 NC='您输入的姓名是:%s'+#13+#10+'注意!一旦确认后,你将不能修改';

paper51.com

paper51.com

图4-3姓名确认窗口

内容来自www.paper51.com

点击确定后显示确认窗口。 copyright paper51.com

MessageBox(0, PChar(format(NC,[S])), '确认', MB_ICONWARNING orMB_YESNO)=IDYES 内容来自www.paper51.com

写密码和写用户名也很重要,在以后的使用过程中就直接读取里面的信息,不需要在向KEY里面写入信息。 http://www.paper51.com

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

//部分代码为:

http://www.paper51.com

if (not ReadSection(0, Str)) then exit; 内容来自www.paper51.com

 if not OpenKey then exit;

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

MD5Str :=MD5DigestToStr(MD5String(Pass)); http://www.paper51.com

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

 Str := StuffString(Str, 65, 32, Md5Str);

copyright paper51.com

 Retcode := RY2_Write(HKey, 0, PChar(Str)); copyright paper51.com

 if retcode < 0 then copyright paper51.com

 begin paper51.com

    CloseKey; 内容来自www.paper51.com

    exit;

内容来自www.paper51.com

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

写用户名与写密码的过程,因为只给了用户名32个字节的存储空间,如果大于这个存储空间,就只取前32个字节储存。这里需要用到Trim( )函数,它主要是用来去掉字符串头和尾的空格。

http://www.paper51.com

//部分代码为: http://www.paper51.com

if Length(OS) > 32 then OS :=Copy(OS, 1, 32) else OS := O;

paper51.com

 OS:= Trim(OS); http://www.paper51.com

 N:=32-Length(OS); copyright paper51.com

 for I:=1 to N do begin

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

    OS:=OS+#32; paper51.com

 end; 内容来自www.paper51.com

Str := StuffString(Str, 97, Length(OS),OS);

paper51.com

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

paper51.com

4.6文件加密应用与编码 paper51.com

在本设计中,加密解密的操作过程需要用到shell控件和FLEX控件,这两个都是DPK文件的控件包。由于Delphi 7.0默认情况下没有安装此控件,因此需要手动添加。首先需要添加该控件的路径,在tools-environment options-library path中加进该文件的路径。然后在Delphi中File-->Open(下拉列表框中选*.dpk)-->install即可。此设计中要用到shell的扩展,shell的扩展是指能够添加某种功能到windows shell的com对象。 paper51.com

由于空间已经安装成功,那么在delphi中建立一个shell module,在上面放置contextmenu控件、flex控件、popupmenu控件和image。Contextmenu主要使用在当用户右键单击文件或文件夹对象时,或在一个文件夹窗口中的背景处单击右键时被调用。把Contextmenu指向popupmenu。双击popupmenu后在里面添加‘加密-文件’和‘解密文件’。 让popupmenu中的事件指向imagelist。在imagelist中添加所需要的图标。Felx控件在事件中需要于progress进度框关联起来。

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

在实现文件加密的过程中,要对KEY作一个判断,看KEY是否连接在计算机上或则是使用的KEY是否正确。利用MessageBox()弹出此窗口提示错误信息。这样表明KEY不可用。

copyright paper51.com

copyright paper51.com

图4-4 初试化错误窗口

内容来自www.paper51.com

//其部分代码为:

http://www.paper51.com

begin 内容来自www.paper51.com

 if (not ReadPass(Pass, HID, FileOwner)) then begin

copyright paper51.com

MessageBox(0, '系统无法找到你的 USB钥匙!' + #13 + #10 + '请你检查USB钥匙后再试。', 'USB 钥匙初始化错误!', MB_ICONWARNING or MB_OK);

copyright paper51.com

    exit; paper51.com

  end;

内容来自www.paper51.com

在文件的加密过程中,需要对文件进行预处理,因为要加密的文件可能是一个文件或则多个文件;还可以是一个目录或者多个目录,利用USB KEY文件加密它不能对目录进行加密,只能对文件进行加密。如果得到是一个目录文件GetFolderFiles,那么寻找文件的路径,CPath:= Path + '\';。找到符合条件的文件,然后把这些符合条件的文件添加到列表。然后在加密过程中对这些文件进行递归查找。

copyright paper51.com

//其部分代码为: paper51.com

//添加符合条件的文件到列表 内容来自www.paper51.com

   if ((SearchRec.Attr and faDirectory) = 0) then begin

paper51.com

     AllFiles.Add(SPath); 内容来自论文无忧网 www.paper51.com

     PForm.StatusBar.Panels[1].Text := IntToStr(AllFiles.Count) + '-个文件';

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

     Application.ProcessMessages;

内容来自www.paper51.com

   end;

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

   //递归查找 内容来自www.paper51.com

   if (DirectoryExists(SPath) and (SearchRec.Name <> '.') and(SearchRec.Name <> '..'))

http://www.paper51.com

      thenGetFolderFiles(SPath); http://www.paper51.com

  end;

http://www.paper51.com

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