您好,欢迎来到360论文服务中心!设为首页 | 加入收藏

360论文服务中心

客服中心

全国咨询电话:18810141013

QQ :点击这里给我发消息 80017332

 点击这里给我发消息 634602927

手机:18810141013

邮箱:634602927@qq.com

短信:18810141013

本站介绍

360论文服务中心是最受欢迎的论文发表与论文编辑服务网站。

360论文服务中心于2000年创建,注册用户量已突破152万人,并帮助近380万人次顺利发表论文。14年来,360论文服务中心始终遵循热情快捷、安全可靠的服务宗旨,深受广大网民青睐。360论文服务中心主要设有论文发表部、论文创作部、期刊合作部、论文采编部、技术运营部和市场推广部等多个部门,是目前国内论文行业,规模最大、服务人员最多的正规网站。

创作发表说明

1. 如果您没有论文,还要评定职称,需要发表论文,请联系我们,客服人员会及时处理;

2. 教授、博士组成的论文指导团队,专业打造高品质论文;

3. 合作期刊,全国最全,与杂志社关系稳定,保证刊期。

360论文服务中心 > 论文写作 > 硕士论文 >

系统客户端的详细设计与实现

2016-05-22 17:52 字体:   打印 收藏 

1  操作控制模块
操作控制模块是客户端的核心模块,用户在客户端的所有操作请求全部由操作控制模块负责调度客户端的其他模块,协调完成用户的操作请求。
(1) 操作控制模块设计
操作控制模块既负责用户界面的控制,又负责调度客户端的其他模块,同时还要控制用户对文档的操作。为便于功能接口的归类设计,将该模块设计为包含InterfaceControl、ClientSchedule和OperateControl三个类。其中,InterfaceControl类实现操作控制模块控制用户界面的各项功能接口,主要包括:InterfaceEnable()、LoginFalse()和BrowseAuthFileList()等接口;ClientSchedule类实现操作控制模块对客户端其它模块调度的各项功能,主要包括:SendLoginInfo()、SendBrowseInfo()、SendOperateInfo()、GetRSAKey()、DecryptionFile()、SendUploadFile()、EncryptionFile()、SendFile()和SendAppInfo()等接口;OperateControl类实现操作控制模块控制用户对文档操作的各项功能接口,主要包括:OperateFull()、OperateEdit()、OperateReadonly()和LockFile()等接口。
(2) 操作控制模块中关键技术的应用
Windows Hook技术:OperateFull()、OperateEdit()、OperateReadonly()接口综合使用WH_CBT、WH_KEYBOARD和WH_MOUSE三种钩子函数。用户操作的各种Windows消息在传送至文档进程之前,由钩子函数将操作消息截获并传送至客户端,由客户端操作控制模块判断消息类型。用户权限允许的操作消息传送至文档进程,操作正常进行;用户权限禁止的操作消息将被操作控制模块丢弃,实现操作控制的功能。
(3) 操作控制模块的实现
(a) 用户登录时,用户的身份验证请求由登录模块传送至操作控制模块,请求信息中包含用户名、密码等信息;操作控制模块调用SendLoginInfo()接口,将用户的身份验证请求传送至客户端通信模块;若登录成功,调用InterfaceEnable()接口,解锁用户界面上的相关文档操作界面;若登录失败,调用LoginFalse()接口,提示失败信息并退出客户端。
(b) 用户请求使用浏览已授权文件时,调用SendBrowseInfo()接口,将浏览已授权文件的请求信息传递至客户端通信模块;文件清单返回后,调用BrowseAuthFileList()接口,载入文件清单浏览界面。
(c) 用户请求使用受保护文档时,调用SendOperateInfo()接口,将使用受保护文档的请求信息传递至客户端通信模块;加密文档、经RSA加密的DES密钥和操作权限信息返回后,调用GetRSAKey()接口,从登录模块获取用户的RSA私钥;调用DecryptionFile()接口,将加密文档、经RSA加密的DES密钥和用户的RSA私钥传送至客户端加解密模块;解密后的文档返回后,根据用户操作权限,对应地调用OperateFull()、OperateEdit()、OperateReadonly()其中一个接口,在打开文档的同时加载包含钩子函数的DLL文件,调用LockFile()接口,禁止客户端以外的进程访问解密的文档,用户在受控状态下操作文档。
WH_CBT钩子截获Windows消息的实现代码如下。
#include "stdafx.h"
 
HHOOK bHook;
 
LRESULT CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam);
 
extern "C" __declspec(dllexport) int WINAPI InstallHook()
{
           HWND hWnd;
 
           hWnd = FindWindow(L"OpusApp",NULL);
 
           DWORD pid;
           DWORD tid;
           if(hwndword!=NULL)
           {
                  tid=GetWindowThreadProcessId(hWnd,&pid);
                  HINSTANCE hCurrent = GetModuleHandle(L"DocHook.dll");
                  if(hCurrent!=NULL)
                  {
      bHook=(HHOOK)SetWindowsHookEx(WH_CBT,HookProc,hCurrent,tid);
                         if(bHook!=NULL)
                         {
                                return 1;
                         }
                  }
           }
           return 0;
}
 
extern "C" __declspec(dllexport) int WINAPI UninstallHook()
{
       if(UnhookWindowsHookEx(bHook))
              return 1;
       return 0;
}
 
LRESULT CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam)
{
       HWND hWnd;
       hWnd = FindWindow(L"OpusApp",NULL);
 
       if(HCBT_DESTROYWND==nCode && hWnd ==(HWND)wParam)
       {
//截获消息并传送至操作控制模块
//PostMessage(FindWindow(NULL,L"DOCUMENTPROTECTSYS//TEM"),WM_COMMAND,9999,NULL);
       }
       LRESULT ret=CallNextHookEx(bHook,nCode,wParam,lParam);
       return ret;
}
 
(d) 用户请求上传需保护的文档时,调用SendUploadFile()接口,将上传需保护文档的请求信息传递至客户端通信模块,请求信息中包含请求上传需保护文档的用户ID信息;经RSA加密的DES密钥返回后,调用GetRSAKey()接口,从登录模块获取用户的RSA私钥;调用EncryptionFile()接口,将需保护文档、经RSA加密的DES密钥和用户的RSA私钥传送至客户端加解密模块;加密文档返回后,调用SendFile()接口,将加密文档传递至客户端通信模块。
(e) 用户申请使用未授权文档时,调用SendAppInfo()接口,将申请使用未授权文档的请求信息传递至客户端通信模块,请求信息中包含请求申请使用未授权文档的用户ID信息、所申请的未授权文档的文件名以及备注信息。
2  通信模块
客户端通信模块是系统客户端与服务器端交互数据信息的桥梁。该模块与服务器端通信模块建立Windows Socket连接,负责客户端与服务器端数据信息的相互传递;在客户器端该模块负责将服务器端返回的数据信息传递给操作控制模块。
(1) 通信模块设计
由于客户端通信模块与服务器端通信模块、操作控制模块传递数据信息采用两种不同的方式,客户端通信模块也设计为包含TCPClient和ClientTransfer两个类。其中,TCPClient类实现客户端通信模块与服务器端通信模块进行数据信息交互功能的各项功能接口,主要包括:Start()、Stop()、ReadMessage()、ReceiveFile()、SendMessage()和SendFile()等接口;ClientTransfer类实现客户端通信模块与操作控制模块进行数据信息交互的各项功能接口,主要包括:TransferLoginResult()、TransferAuthFileList()和TransferFile()接口。
(2) 通信模块中关键技术的应用
Windows socket技术:TCPClient类中的Start()和Stop()接口完成Windows socket通信中Client端与Server端TCP连接的建立和结束;ReadMessage()、ReceiveFile()、SendMessage()、SendFile()和SendKey()接口完成接收和发送各类数据信息的操作。
(3) 通信模块的实现
(a) 客户端通信模块初始化TCPClient实例,调用实例的Start()接口,与Windows Socket通信的Server端建立TCP连接;调用ReadMessage()接口接收操作类型的信息,调用ReceiveFile()接口接收加密文档数据;调用SendMessage()接口传送操作请求信息;调用SendFile()接口传送加密文档数据。
(b) 客户端通信模块与操作控制模块通信时,调用TransferLoginResult()接口传送用户验证结果;调用TransferAuthFileList()接口传送浏览已授权文件清单;调用TransferFile()接口传送已授权文件。操作控制模块调度客户端通信模块的各个接口在操作控制模块中已做了描述,这里不再赘述。
3  加解密模块
客户端加解密模块负责客户端所有与加解密相关的操作。DES加密算法主要用于电子文档的加密、解密,RSA算法主要用于对经RSA加密的DES密钥进行解密。
(1) 加解密模块设计
根据客户端加解密模块使用的两种加密算法,将加解密模块设计为DESEncrypt和RSAEncrypt两个类。其中,DESEncrypt类实现DES加密、解密功能的接口,主要包括DESDecrypt()、DESEncrypt()、SendDecryptFile()和SendEncryptFiel()接口;RSAEncrypt实现RSA解密功能的接口:RSADecrypt()。
(2) 加解密模块中关键技术的应用
(a) RSA解密技术:
RSADecrypt()接口使用用户的RSA私钥对经RSA加密的DES密钥进行RSA解密;
(b) DES加密、解密技术
DESEncrypt()接口使用DES密钥加密电子文档,DESEncrypt()接口使用DES密钥解密加密文档。
(3) 加解密模块的实现
(a) 操作控制模块传送来加密文档、用户的RSA私钥和经RSA加密的DES密钥,客户端加解密模块调用RSADecrypt()接口,解密出DES密钥;调用DESDecrypt()接口,解密出电子文档;调用SendDecryptFile()接口将解密后的电子文档传送至操作控制模块。
(b) 操作控制模块传送来电子文档、用户的RSA私钥和经RSA加密的DES密钥,客户端加解密模块调用RSADecrypt()接口,解密出DES密钥;调用DESEncrypt()接口,加密文档;调用SendEncryptFiel()接口,将加密文档传送至操作控制模块。
4  登录模块
登录模块是用户与客户端交互信息的第一个模块。登录模块负责将用户登录信息传送至操作控制模块;从用户的USBKEY中加载用户RSA私钥,由操作控制模块调用。
(1) 登录模块设计
登录模块执行的操作相对简单,将模块设计为Login类。其中:SendLogin()接口负责传送用户登录信息,LoadRSAKey()接口负责加载将用户的RSA私钥。
(2) 登录模块的实现
(a) 用户输入登录信息并提交时,调用SendLogin()接口,将用户登录信息传送至操作控制模块。
(b) 客户端需要完成加密、解密操作时,操作控制模块将使用用户RSA私钥的请求传送至登录模块,调用LoadRSAKey()接口,将用户RSA私钥加载至MemoryStream对象中,由操作控制模块调用。



联系我们

全国免费热线:400-086-0807
咨询QQ:634602927
投稿邮箱:634602927@qq.com