基于des加密算法的word加密插件的实现—免费毕业设计论文内容摘要:
件响应宿主程序中对这些项目的操作,并对宿主程序中的数据进行特定操作。 3 需求分析和方案 设计 需求分析 功能需求 用户在编辑完文档后可以选择把文档全部内容或部分内容加密生成密文,同样点击插件中的解密按纽可以把密文还原为明文。 系统功能流程图 见图 2: 第 9 页 共 20 页 图 2 系统功能流程图 开发环境 本插件在 word2020 下开发,可以在 Windows2020/2020/xp 等 操作系统下运行。 开发环境配置表 ,如表 1: 表 1 系统配置表 PC 硬件 处理器: Intel PII 450 或更好 内 存: 256 M 或更大 硬 盘: 20 G 或更大 软件 Microsoft Windows NT Server 或更高版本 Microsoft Office 2020 Y 用户 是否要求加密 DES加密 Word内容 Word 是否被 DES加密 DES解密 Word内容 保存 Word内容 N Y N 第 10 页 共 20 页 方案设计 此功能的实现包括了 DES 算法的实现和插件的实现。 可以用 VB 编写 Word插件 , VB 以其开发的易学好用和强大的用户界面设计能力倍受程序员的青睐,是微软公司推出的开发 Windows 应用程序的主力平台之一。 但其不能直接对寄存器进行操作,没有直接的输入输出端口操作语句, 考虑到 DES 算法的效率与 实现等问题 ,必须借助其他编程语言,而 C/C++语言具备 较高的运行效率 ,所以可以通过在 VC 环境下编写出高效的 DES 算法代码 的动态链接库( DLL),然后在VB 中调用。 图 3 系统设计流程图 4 程序的实现 VC 建立 DES 算法模块 新建 Win32 动态库工程,如下图所示: 加密 Word DES算法模块 运行加密插件 Word内容加密 解密 调用 DES加密模块 调用 DES解密模块 Word内容解密 第 11 页 共 20 页 图 4 建立 Win32 动态库工程 加密导出函数的定义 void __stdcall Encode( char *sInput, char *sOutput) //sInput 输入字符串, sOutput输出字符串 { char buf[1024]。 //定义 1024 字节的缓冲变量 memset( buf, 0x00, sizeof( buf))。 //缓冲区清零 Des_Go( buf, sInput, sizeof( sInput) , key, sizeof( key) , ENCRYPT)。 //加密函数 strcpy( sOutput,buf)。 //将加密后的字 符串输出 } 解密导出函数的定义 void __stdcall Decode( char *sInput, char *sOutput) //sInput输入字符串, sOutput 输出字符串 { char buf[1024]。 //定义 1024 字节的缓冲变量 memset( buf, 0x00, sizeof( buf))。 //缓冲区清零 Des_Go( buf, sInput, sizeof( sInput) , key, sizeof( key) , DECRYPT)。 //解密函数 strcpy( sOutput,buf)。 //将加密后的字符串输出 } 加解密相关函数的声名 typedef bool ( *PSubKey) [16][48]。 static void DES( char Out[8], char In[8], const PSubKey pSubKey, bool Type)。 /标准 DES 加 /解密 static void SetKey( const char* Key, int len)。 // 设置密钥 static void SetSubKey( PSubKey pSubKey, const char Key[8])。 //设置子密钥 static void F_func( bool In[32], const bool Ki[48])。 // f 函数 static void S_func( bool Out[32], const bool In[48])。 // s 盒代替 第 12 页 共 20 页 static void Transform( bool *Out, bool *In, const char *Table, int len)。 // 变换 static void Xor( bool *InA, const bool *InB, int len)。 // 异或 static void RotateL( bool *In, int len, int loop)。 // 循环左移 static void ByteToBit( bool *Out, const char *In, int bits)。 //字节组转换成位组 static void BitToByte( char *Out, const bool *In, int bits)。 //位组转换成字节组 static bool SubKey[2][16][48]。 // 16 圈子密钥 static bool Is3DES。 // 3 次 DES 标志 static char Tmp[256], deskey[16]。 VB 编写 Word 插件 建立 Word 插件工程 ( 1)创建“外接程序”工程,如图 5: 图 5 VB中新建工程图 (2) 打开“设计器”中的 Connect 设计器。 双击该 Connect 的图标 ,如图 6: 图 6 工程项目图 修改其中的工程名和应用程序。 其中,“应用程序”选择该插件是针对哪个具体的应用程序的。 这里选 Word。 ( 3) 添加对 Word类型库的引用 ,如图 7 第 13 页 共 20 页 图 7 工程引用图 系统缺省添加了对 Office类型库的引用。 但由于开发的是 Word插件,因此需要存取 Word中的对象。 所有必须添加对 Word的引用。 ( 4)打开该设计器的代码窗口。 设计器的代码就是插件接口方法的实现。 1) 删除系统缺省添加的代码。 系统缺省添加的代码是针对 VB插件的,而不是 Word或其它应用 程序插件的。 因此删除它们。 2) 添加 AddinInstance对象的 OnConnection方法。 AddinInstance就代表了该插件本身。 ( 5) 调试 设置该工程的属性,将“调试”中的启动程序设置为系统中安装的。 图 8 工程属性图 此后,可以设置断点,运行。 采用标准 VB中的调试方法调试程序。 ( 6) 安装 第 14 页 共 20 页 1) 生成 DLL后,自动在本机注册该插件。 本机以后就可以使用了。 2) 在其它机器安装: 将 DLL拷贝到 system32目录(其它目录也可以) 运行: regsvr32 DLL文件全路径( SYSTEM32目录不用路径) 3) 删除 运行: regsvr32 u DLL文件全路径( SYSTEM32目录不用路径) Word 代码 的编写 (1) API 函数声明 ‘使用 API 文本浏览器贴入的 WinAPI 函数声明 Private Declare Function OpenClipboard Lib user32 ( ByVal hwnd As Long) As Long ‘声明打开剪贴板函数 Private Declare Function CloseClipboard Lib user32 () As Long ‘声明关闭剪贴板函数 Private Declare Function EmptyClipboard Lib user32 () As Long ‘声明清除剪贴板函数 Private Declare Function SetClipboardData Lib user32 ( ByVal wFormat As Long, ByVal hMem As Long) As Long ‘声明剪贴板赋值函数 Private Declare Sub Encode Lib DLL ( ByVal sInput As String, ByVal sOutput As String) ’加密函数的声明 Private Declare Sub Decode Lib DLL ( ByVal sInput As String, ByVal sOutput As String) ‘解密函数的声明 Private Const CF_BITMAP = 2 Private mAppWord As Private mBar As ‘使用 WithEvents 声明,可以定义 mBtn1,mBtn2 的事件响应程序 Private WithEvents mBtn1 As Private WithEvents mBtn2 As ( 2)添加工具栏加密解密按钮 Private Sub AddinInstance_OnConnection( ByVal Application As Object, ByVal ConnectMode As , ByVal AddInInst As Object, custom() As Variant) Set mAppWord = Application Set mBar = ( My Toolbar for VB, , , True) Set mBtn1 = ( ) ’添加 mBtn按钮的事件 Set mBtn2 = ( ) ’添加 mBtn2按钮的事件 SetButtonStyle mBtn1, 203, 加密 , Encode, msoButtonIconAndCaption ‘定义加密按钮 SetButtonStyle mBtn2, 203, 解密 , Decode, msoButtonIconAndCaption ‘定义解密按钮 End Sub ( 3)定义按钮风格 Private Sub SetButtonStyle( btn As , idPic As Long, sCaption As String, sToolTip As String, btnStyle As MsoButtonStyle) ‘设置按键图标 ‘这里需要使用 WinAPI函数,见最上面的函数声明(使用开始菜单中 ”Microsoft Visual Basic 第 15 页 共 20 页 API 文本浏览器 ”选择和粘贴 Dim bmp As IPictureDisp Set bmp = LoadResPicture( 203, vbResBitmap) 39。 vb 加载资源的方法 If Not bmp Is Nothing Then OpenClipboard 0 EmptyClipboard SetClipboardData CF_BITMAP, CloseClipboard End If 39。 设置按键文本 = sCaption 39。 设置按键的 ToolTip 帮助信息 = sToolTip 39。 显示按键 = True 39。 设置按键风格 = btnStyle 39。 设置按键为允许 = True End Sub ( 4) 加密按钮事件 Private Sub mBtn1_Click( ByVal Ctrl As , CancelDefault As Boolean) 39。 操作 Word 对象 Dim doc As 39。 取 Word 当前活动文档 Set doc = Dim para As Dim temp As String * 1024 ‘分配 1024 个字节缓冲区 Set para =。基于des加密算法的word加密插件的实现—免费毕业设计论文
相关推荐
tr 4 系统的完整设计与开发 论坛基本配置 系统运行时,有些数据库里的数据是会被频繁调用的,为了便于书写代码和程序的严谨,可以将这些数据首先赋给一些变量, 在后面的程序运行中直接调用变量,不用频繁的访问数据库。 一些保存论坛基本信息的数据就属于这类。 所以在运行时 首先将论坛一些基本参数在数据库连接后即从数据库中调出 ,以上内容在 文件里连接数据库后执行,其中使用 connection 对象的
2V out3L 780 5C 10C 11C 13+ 12 V V C C220 V ~ 12V ~INR 1910KR 2010KR 2110K+ 5VP 17P 16P 13P 14P 15V C CGND1V i n2OV3+V4B 050 5SR 22240C 1535u FV C C 1 湿度传感器 电路 本设计的湿度检测电路由 555 多谐振荡器来实现, HS1101 作为电容变
可以说是一个对具体问题的反复理解和抽象的过程。 理解就是对现实问题的理解,要弄清楚究竟需要解决什么问题。 抽 象就是除去问题的表面,提取问题的本质,建立问题的逻辑模型,以便以后阶段 系统的设计实现。 需求分析阶段是软件产品生存命期中的一个重要阶段,其根本任务是确定用户对软件系统的需 求。 在高校评估工作中,文档的管理是相当重要的一个工作,需要花费大量的时间去整理文档资料
1、高中物理资源下载平台世昌的博客 2016 学年度高中毕业班第四次调研测试理科综合能力测试注意:本试卷分第卷(选择题)和第卷(非选择题)两部分,满分 300 分,考试时间150 分钟。 可能用到的相对原子量: 卷(共 126 分)一、选择题:本题包括 13 个小题,每小题 6 分,每小题只有一个选项符合题意。 1下列关于细胞结构和功能的说法,错误的是A植物细胞的“生命系统的边界 ”是细胞膜B
1、高中物理资源下载平台世昌的博客 卷(选择题)和第卷(非选择题) ,满分 300 分,测试时间 150 分钟。 考试结束后,只交答题卡。 注意事项:1 答题前,考生先将自己的姓名、准考证号码填写清楚,将条形码准确粘贴至条形码区域内2 选择题必修使用 2B 铅笔涂卡,非选择题必须使用 米黑色字迹的签字笔书写,字体工整、笔迹清楚。 3 请按照题号顺序在各题目的答题区域内作答
买,就可以下订单,标明版本、包装、送货、付款的方式等内容。 书店再通知图书出版商或图书分销商将用户要买的书送到西雅图的库房,包装好后分发给用户。 一般情况下,客户在下订单后的 5日内就可 以拿到书。 亚马逊在成长过程中,总是不断寻找新的战略机会。 1998 年,这位在线商家首次开办了一家音像商店,并扩大了一家礼品店的规模。 同年,贝佐斯又花了 亿美元收购了两家公司