毕业设计(论文)-基于DES加密算法的WORD加密插件的实现.doc_第1页
毕业设计(论文)-基于DES加密算法的WORD加密插件的实现.doc_第2页
毕业设计(论文)-基于DES加密算法的WORD加密插件的实现.doc_第3页
毕业设计(论文)-基于DES加密算法的WORD加密插件的实现.doc_第4页
毕业设计(论文)-基于DES加密算法的WORD加密插件的实现.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于基于 DES 加密算法的加密算法的 WORD 加密插件的实现加密插件的实现 摘摘 要要 随着社会发展 社会进入信息时代 信息技术和信息产业正在改变传统的 生产 经营和生活方式 信息已成为社会发展的重要战略资源 如今 Office 办公文档已是日常办公生活中不可缺少的一部分 与此同时伴随而来的信息安 全问题也日益突出 如何确保 Word 文档中的内容不被未授权的第三方所知 防 止重要信息被随意改动 成为当务之急 如果在 Word 工具栏中添加一个加密插 件 可以对文档全部内容或部分内容加密 便能有效防止信息泄漏 本论文采用VB编写Word插件 通过采用Windows下的动态链接库技术 DLL 在VC中把DES算法封装起来做成DLL模块供VB调用 实现了开发加密插件时对加 密函数的调用 提高了加密算法的效率 通过使用该插件在Word中添加的工具 按键 便能简单有效地对文档内容加解密 使用户在操作WORD文档时更加方便 安全 关键词关键词 加密插件 信息安全 COM 组件 动态链接库 目目 录录 论文总页数 20 页 1引言 1 1 1 选题背景 1 1 2 选题意义 1 2 理论基础 2 2 1 DES 算法描述 2 2 1 1 DES 算法框图 2 2 1 2 DES 解密 3 2 1 3 DES 算法原理 3 2 2 COM 组件简介 5 2 2 1 组件 5 2 2 2 接口 6 2 2 3 创建 7 2 2 4 复用 8 2 3 插件简介 8 3 需求分析和方案设计 8 3 1 需求分析 8 3 1 1 功能需求 8 3 1 2 开发环境 9 3 2 方案设计 10 4 程序的实现 10 4 1 VC 建立 DES 算法模块 10 4 1 1 加密导出函数的定义 11 4 1 2 解密导出函数的定义 11 4 1 3 加解密相关函数的声名 11 4 2 VB 编写 WORD 插件 12 4 2 1 建立 Word 插件工程 12 4 2 2 Word 代码的编写 14 5 测试 16 结 论 17 参考文献 18 致 谢 19 声 明 20 第 1 页 共 20 页 1 1 引言引言 1 1 选题背景选题背景 DES 是 Data Encryption Standard 数据加密标准 的缩写 它是由 IBM 公司研制的一种加密算法 美国国家标准局于 1977 年公布把它作为非机要部门 使用的数据加密标准 二十多年来 它一直活跃在国际保密通信的舞台上 扮 演了十分重要的角色 DES 是一个分组加密算法 他以 64 位为分组对数据加密 同时 DES 也 是一个对称算法 加密和解密用的是同一个算法 它的密匙长度是 56 位 因为每个第 8 位都用作奇偶校验 密匙可以是任意的 56 位的数 而且 可以任意时候改变 其中有极少量的数被认为是弱密匙 但是很容易避开 他们 所以保密性依赖于密钥 按照组件化的程序设计的思想 复杂的应用程序被设计成一些小的 功能 单一的组件模块 这些组件模块可以运行在同一台机器上 也可以运行在不同 的机器上 为了实现这样的应用软件 组件程序和组件程序之间需要一些极为细致的 规范 只有组件程序遵守了这些共同的规范 然间系统才能正常运行 为此 OMG 和 Microsoft 分别提出了 CORBA Common Object Request Breaker Architecture 和 COM Component Object model 标准 目前 CORBA 模型主要应用于 UNIX 操作系统平台上 而 COM 则主要应用于 Microsoft Windows 操作系统平台上 在 COM 标准中 一个组件程序也被称为一个模块 它可以是一个动态连接 库 DLL 被称为进程内组件 in of process component 也可以是一个可 执行程序 EXE 被称为进程外组件 out of process component COM 对象是建立在二进制可执行代码级的基础上 而 C 等语言中的对象是 建立在源代码级基础上的 因此 COM 对象是语言无关的 这一特性使用不同编 程语言开发的组件对象进行交互成为可能 在 Microsoft Windows 系统平台上 COM 技术被应用于系统的各个层次 从底层的 COM 对象管理到上层的应用程序交互都用到了 COM 标准 1 2 选题意义选题意义 Word 是当今非常流行的一款字处理软件 是装机的必备程序 但随之而来 的信息安全问题也收到普遍关注 为了防止信息财产被故意或偶然地非授权泄 漏 保护用户的利益和隐私 有必要对文档进行加密 目前 Word 文档可以通 过设置密码来决定用户是否有打开文档的权限 从而保护文档信息安全 这样 是对整个文件的操作 并且必须要有密码配合 我们可以通过一个插件对文档 第 2 页 共 20 页 内容加解密 这样使用起来更加简单方便 2 2 理论基础理论基础 2 1 DES 算法描述算法描述 2 1 1 DESDES 算法框图算法框图 DES 对 64 bit 位的明文分组 M 进行操作 M 经过一个初始置换 IP 置换 成 m0 将 m0 明文分成左半部分和右半部分 m0 L0 R0 各 32 位长 然后进 行 16 轮完全相同的运算 这些运算被称为函数 f 在运算过程中数据与密匙结 合 经过 16 轮后 左 右半部分合在一起经过一个末置换 在每一轮中 密匙位移位 然后再从密匙的 56 位中选出 48 位 通过一个 扩展置换将数据的右半部分扩展成 48 位 并通过一个异或操作替代成新的 32 位数据 在将其置换换一次 这四步运算构成了函数 f 然后 通过另一个异 或运算 函数 f 的输出与左半部分结合 其结果成为新的右半部分 原来的右 半部分成为新的左半部分 将该操作重复 16 次 就实现了 具体如图 1 所示 图 1 DES 算法框图 2 1 2 DES 解密解密 加密和解密使用相同的算法 DES 加密和解密唯一的不同是密匙的次序相反 如果各轮加密密匙分别是 K1 K2 K3 K16 那么解密密匙就是 K16 K15 K14 K1 2 1 3 DES 算法原理算法原理 1 处理密钥 从用户处获得 64 位密钥 每第 8 位为校验位 为使密钥有正确的奇偶校验 每个密钥要有奇数个 1 位 本文如未特指 均指二进制位 2 具体过程 对密钥实施变换 使得变换以后的密钥的各个位与原密钥位对应关系如下表 所示 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 49 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4 把变换后的密钥等分成两部分 前 28 位记为 C 0 后 28 位记为 D 0 计算子密钥 共 16 个 从 i 1 开始 第 3 页 共 20 页 分别对 C i 1 D i 1 作循环左移来生成 C i D i 共 16 次 每次循环左移位数如下表所示 轮 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 位数 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 串联 C i D i 得到一个 56 位数 然后对此数 作如下变换以产生 48 位子密钥 K i 变换过程如下 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32 按以上方法计算出 16 个子密钥 对 64 位数据块的处理 把数据分成 64 位的数据块 不够 64 位的以适当的方式填补 对数据块作变换 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 将变换后的数据块等分成前后两部分 前 32 位记为 L 0 后 32 位记为 R 0 用 16 个子密钥对数据加密 根据下面的扩冲函数 E 扩展 32 位的成 48 位 32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1 用 E R i 1 与 K i 作异或运算 把所得的 48 位数分成 8 个 6 位数 1 6 位为 B 1 7 12 位为 B 2 43 48 位为 B 8 用 S 密箱里的值替换 B j 从 j 1 开始 S 密箱里的值为 4 位数 共 8 个 S 第 4 页 共 20 页 密箱 取出 B j 的第 1 和第 6 位串联起来成一个 2 位数 记为 m m 即是 S 密箱里用 来替换 B j 的数所在的列数 取出 B j 的第 2 至第 5 位串联起来成一个 4 位数 记为 n n 即是 S 密箱里 用来替换 B j 的数所在的行数 用 S 密箱里的值 S j m n 替换 B j 8 个 S 密箱如下所示 S BOXE S1 Binary d1d6 00 01 10 11 d2 d5 Dec 0 1 2 3 1100 12 5 0 15 3 1101 13 0 14 3 5 1110 14 12 9 5 6 1111 15 7 2 8 11 返回第一步直至 8 个数据块都被替换 把 B 1 至 B 8 顺序串联起来得到一个 32 位数 对这个数做如下变换 bit goes to bit bit goes to bit 16 1 2 17 7 2 8 18 20 3 24 19 21 4 14 20 29 5 32 21 12 6 27 22 28 7 3 23 17 8 9 24 1 9 19 25 15 10 13 26 23 11 30 27 26 12 6 28 5 13 22 29 18 14 11 30 31 15 4 31 10 16 25 32 把得到的结果与 L i 1 作异或运算 把计算结果賦给 R i 第 5 页 共 20 页 把 R i 1 的值賦给 L i 从 a 循环执行 直到 K 16 也被用到 把 R 16 和 L 16 顺序串联起来得到一个 64 位数 对这个数实施 II 变换的 逆变换 以上就是 DES 算法如何加密一段 64 位数据块 解密时用同样的过程 只 需把 16 个子密钥的顺序颠倒过来 应用的顺序为 K 16 K 15 K 14 K 1 2 2 COM 组件简介组件简介 2 2 1 组件组件 COM 是微软公司为了计算机工业的软件生产更加符合人类的行为方式开 发的一种新的软件开发技术 在 COM 构架下 人们可以开发出各种各样的功 能专一的组件 然后将它们按照需要组合起来 构成复杂的应用系统 由此带 来的好处是多方面的 可以将系统中的组件用新的替换掉 以便随时进行系统 的升级和定制 可以在多个应用系统中重复利用同一个组件 可以方便的将应 用系统扩展到网络环境下 COM 与语言 平台无关的特性使所有的程序员均可 充分发挥自己的才智与专长编写组件模块 等等 COM 是开发软件组件的一种方法 组件实际上是一些小的二进制可执行程 序 它们可以给应用程序 操作系统以及其他组件提供服务 开发自定义的 COM 组件就如同开发动态的 面向对象的 API 多个 COM 对象可以连接起来 形成应用程序或组件系统 并且组件可以在运行时刻 在不被重新链接或编译 应用程序的情况下被卸下或替换掉 Microsoft 的许多技术 如 ActiveX DirectX 以及 OLE 等都是基于 COM 而建立起来的 并且 Microsoft 的开发人员也大量 使用 COM 组件来定制他们的应用程序及操作系统 COM 所含的概念并不止是在 Microsoft Windows 操作系统下才有效 COM 并不是一个大的 API 它实际上象结构化编程及面向对象编程方法那样 也是 一种编程方法 在任何一种操作系统中 开发人员均可以遵循 COM 方法 一个应用程序通常使由单个的二进制文件组成的 当编译器生成应用程序 之后 在对下一个版本重新编译并发行新生成的版本之前 应用程序一般不会 发生任何变化 操作系统 硬件及客户需求的改变都必须等到整个应用程序被 重新生成 目前这种状况已经发生变化 开发人员开始将单个的应用程序分隔成单独 多个独立的部分 也既组件 这种做法的好处是可以随着技术的不断发展而用 新的组件取代以有的组件 此时的应用程序可以随新组件不断取代旧的组件而 第 6 页 共 20 页 渐趋完善 而且利用已有的组件 用户还可以快速的建立全新的应用 传统的做法是将应用程序分割成文件 模块或类 然后将它们编译并链接 成一个单模应用程序 它与组件建立应用程序的过程 称为组件构架 有很大 的不同 一个组件同一个微型应用程序类似 即都是已经编译链接好并可以使 用的二进制代码 应用程序就是由多个这样的组件打包而得到的 单模应用程 序只有一个二进制代码模块 自定义组件可以在运行时刻同其他的组件连接起 来以构成某个应用程序 在需要对应用程序进行修改或改进时 只需要将构成 此应用程序的组件中的某个用新的版本替换掉即可 COM 即组件对象模型 是关于如何建立组件以及如何通过组件建立应用 程序的一个规范 说明了如何可动态交替更新组件 2 2 2 接口接口 对于 COM 来讲 接口是一个包含一个函数指针数组的内存结构 每一个 数组元素包含的是一个由组件所实现的函数地址 对于 COM 而言 接口就是 此内存结构 其他东西 均是 COM 不关心的实现细节 在 C 中 可以用抽象基类来实现 COM 接口 由于一个 COM 组件可以实 现支持任意数目的接口 因此对于这样的组件 可以用抽象基类的多重继承来 实现 用类来实现组件将比其他方法更为容易 对于客户来说 一个组件就是一个接口集 客户只能通过接口才能和 COM 组件打交道 从整体上讲 客户对于一个组件可以说是知之甚少的 通常情况 下 客户甚至不必知道一个组件所提供的所有接口 客户同组件的交互是通过接口完成的 在客户查询组件其他的接口时 也 是通过接口完成的 这个接口就是 IUnknown Iunknown 接口的定义包含在 Win32 SDK 中的 UNKNOWN H 的头文件中 引用如下 interface IUnknown virtual HRESULT stdcall QueryInterface const IID virtual ULONG stdcall AddRef 0 virtual ULONG Release 0 所有的 COM 都要继承 IUnknown 可以用 Iunknown 的接口指针来查询该 组件的其他的接口 并且每个接口的 vtbl 中的前三个函数都是 QueryInterface AddRef 和 Release 这使得所有的 COM 接口都可以被当作成 IUnknown 接口来处理 由于所有的接口都支持 QueryInterface 因此组件的任何 一个接口都可以被客户用来获取它所支持的其他接口 第 7 页 共 20 页 在用 QueryInterface 将组件抽象成由多个相互独立的接口构成的集合后 还 需要管理组件的生命期 这一点是通过对接口的引用计数实现的 客户并不能 直接控制组件的生命期 当使用完一个接口而要用组件的另一个接口时 是不 能将改组件释放的 对组件的释放可以由组件在客户使用完所有的组件之后自 己完成 IUnknown 的另外两个成员函数 AddRef 和 Release 的作用就是给客户 提供一种让它指示何时处理完一个接口的手段 AddRef 和 Release 实现的是一种名为引用技术的内存管理技术 当客户从 组件获得一个接口时 此引用计数值将增 1 当客户使用完某个接口时 组件 的引用计数值将减 1 当引用计数值为 0 时 组件可以将自己从内存中删除 AddRef 和 Release 可以增加和减少这一计数值 2 2 3 创建创建 将组件分成多个接口只是将单模应用分个成多个部分的第一步 组件需要 被放入动态链接库 DLL 中 DLL 是一个组件服务程序 或者说是发行组件 的一种方式 组件实际上应看成是在 DLL 中实现的接口集 在客户获取某个组 件接口指针之前 它必须先将相应的 DLL 装载到其进程空间中 并创建此组件 由于客户组件所需要的所有函数都可以通过某个接口指针而访问到 因此 可以在 DLL 中引出 CreatInstance 函数就可以使用户调用它 之后 可以装载 DLL 并调用其中的函数 此功能可由 COM 库函数 CoCreateInstance 来实现 CoCreateInstance 创建组件的过程是 传给它一个 CLSID 然后它创建相应的组 件 并返回指向所请求的接口的指针 但 CoCreateInstance 没有给客户提供一种 能控制组件创建过程的方法 缺乏一定的灵活性 事实上 常用类厂来创建组 件 类厂就是一个带有能够创建其他组件的接口的组件 客户先创建类厂本身 然后再用一个接口 如 IClassFactory 来创建所需的组件 然后还要用 DllRegisterSever 在 Windows 中注册这个组件 2 2 4 复用复用 COM 组件可以被复用 它支持 接口继承 这种继承指的是一个类继承 其基类的类型或接口 抽象基类是一种最纯粹的接口继承 并且正好也被用来 实现 COM 接口 在 COM 中 我们可以用包容和聚合来对组件进行改造 包容是在接口级完成的 外部组件包含指向内部接口的指针 此时 外部 组件仅仅是内部组件的一个客户而已 它将使用内部组件的接口来实现它自己 的接口 外部组件也可以通过将调用转发给内部组件的方法来重新实现内部组 件所支持的某个接口 并且外部组件还可以在内部组件代码的前后加上一些代 第 8 页 共 20 页 码以对接口进行改造 聚合是包含的一种变化形式 当外部组件聚合了某个内部组件的一个接口 时 它并没有象包容那样重新实现此接口并显式的将调用请求转发给内部组件 相反 外部组件直接把内部组件的接口指针返回给客户 使用这种方法 外部 组件将无需重新实现并转发接口中的所有函数了 包容和聚合为实现组件的复用提供了一种极具鲁棒性的机制 在组件构架 下 客户于组件的实现完全隔离开了 2 3 插件简介插件简介 插件是一类特殊的组件 它的目的不是为一般应用程序使用 而是专为特 定的应用程序使用 插件一般在宿主应用程序上添加控制项 如菜单 工具按 键等 插件响应宿主程序中对这些项目的操作 并对宿主程序中的数据进行特 定操作 3 3 需求分析和方案设计需求分析和方案设计 3 1 需求分析需求分析 3 1 1 功能需求功能需求 用户在编辑完文档后可以选择把文档全部内容或部分内容加密生成密文 同样点击插件中的解密按纽可以把密文还原为明文 系统功能流程图见图 2 第 9 页 共 20 页 Y 用户 是否要求 加密 DES 加密 Word 内容 Word 是否 被 DES 加 密 DES 解密 Word 内容 保存 Word 内容 N Y N 图 2 系统功能流程图 3 1 2 开发环境开发环境 本插件在 word2003 下开发 可以在Windows2000 2003 xp 等操作系统下运行 开 发环境配置表 如表 1 表 1 系统配置表 硬件 处理器 Intel PII 450 或更好 内 存 256 M 或更大 硬 盘 20 G 或更大 PC 软件 Microsoft Windows NT Server 4 0 或更高版本 Microsoft Office 2003 3 2 方案设计方案设计 此功能的实现包括了 DES 算法的实现和插件的实现 可以用 VB 编写 Word 插件 VB 以其开发的易学好用和强大的用户界面设计能力倍受程序员的 青睐 是微软公司推出的开发 Windows 应用程序的主力平台之一 但其不能直 接对寄存器进行操作 没有直接的输入输出端口操作语句 考虑到 DES 算法的 效率与实现等问题 必须借助其他编程语言 而 C C 语言具备较高的运行效 率 所以可以通过在 VC 环境下编写出高效的 DES 算法代码的动态链接库 DLL 然后在 VB 中调用 第 10 页 共 20 页 加密 Word DES 算法模块 运行加密插件 Word 内容加密 解密调用 DES 加密模块 调用 DES 解密模块 Word 内容解密 图 3 系统设计流程图 4 4 程序的实现程序的实现 4 1 VC 建立建立 DES 算法模块算法模块 新建 Win32 动态库工程 如下图所示 图 4 建立 Win32 动态库工程 4 1 1 加密导出函数的定义加密导出函数的定义 void stdcall Encode char sInput char sOutput sInput 输入字符串 sOutput 输出字 符串 char buf 1024 定义 1024 字节的缓冲变量 第 11 页 共 20 页 memset buf 0 x00 sizeof buf 缓冲区清零 Des Go buf sInput sizeof sInput key sizeof key ENCRYPT 加密函数 strcpy sOutput buf 将加密后的字符串输出 4 1 2 解密导出函数的定义解密导出函数的定义 void stdcall Decode char sInput char sOutput sInput 输入字符串 sOutput 输出字 符串 char buf 1024 定义 1024 字节的缓冲变量 memset buf 0 x00 sizeof buf 缓冲区清零 Des Go buf sInput sizeof sInput key sizeof key DECRYPT 解密函 数 strcpy sOutput buf 将加密后的字符串输出 4 1 3 加解密相关函数的声名加解密相关函数的声名 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 盒代替 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 4 2 VB 编写编写 Word 插件插件 4 2 1 建立建立 Word 插件工程插件工程 1 创建 外接程序 工程 如图 5 第 12 页 共 20 页 图 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 调试 设置该工程的属性 将 调试 中的启动程序设置为系统中安装的 WinWord exe 图8 工程属性图 此后 可以设置断点 运行 采用标准VB中的调试方法调试程序 6 安装 1 生成DLL后 自动在本机注册该插件 本机以后就可以使用了 2 在其它机器安装 将DLL拷贝到system32目录 其它目录也可以 运行 regsvr32 DLL文件全路径 SYSTEM32目录不用路径 3 删除 运行 regsvr32 u DLL文件全路径 SYSTEM32目录不用路径 4 2 2 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 声明关闭剪贴板函数 第 14 页 共 20 页 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 Word Application Private mBar As Office CommandBar 使用 WithEvents 声明 可以定义 mBtn1 mBtn2 的事件响应程序 Private WithEvents mBtn1 As Office CommandBarButton Private WithEvents mBtn2 As Office CommandBarButton 2 添加工具栏加密解密按钮 Private Sub AddinInstance OnConnection ByVal Application As Object ByVal ConnectMode As AddInDesignerObjects ext ConnectMode ByVal AddInInst As Object custom As Variant Set mAppWord Application Set mBar mAppWord CommandBars Add My Toolbar for VB True Set mBtn1 mBar Controls Add Office MsoControlType msoControlButton 添加 mBtn 按钮的事件 Set mBtn2 mBar Controls Add Office MsoControlType msoControlButton 添加 mBtn2 按钮的事件 SetButtonStyle mBtn1 203 加密 Encode msoButtonIconAndCaption 定义加密按钮 SetButtonStyle mBtn2 203 解密 Decode msoButtonIconAndCaption 定义解密按钮 End Sub 3 定义按钮风格 Private Sub SetButtonStyle btn As Office CommandBarButton idPic As Long sCaption As String sToolTip As String btnStyle As MsoButtonStyle 设置按键图标 这里需要使用 WinAPI 函数 见最上面的函数声明 使用开始菜单中 Microsoft Visual Basic API 文本浏览器 选择和粘贴 Dim bmp As IPictureDisp Set bmp LoadResPicture 203 vbResBitmap vb 加载资源的方法 If Not bmp Is Nothing Then OpenClipboard 0 EmptyClipboard SetClipboardData CF BITMAP bmp Handle CloseClipboard btn PasteFace End If 设置按键文本 btn Caption sCaption 第 15 页 共 20 页 设置按键的 ToolTip 帮助信息 btn ToolTipText sToolTip 显示按键 btn Visible True 设置按键风格 btn Style btnStyle 设置按键为允许 btn Enabled True End Sub 4 加密按钮事件 Private Sub mBtn1 Click ByVal Ctrl As Office CommandBarButton CancelDefault As Boolean 操作 Word 对象 Dim doc As Word Document 取 Word 当前活动文档 Set doc mAppWord ActiveDocument Dim para As Word Range Dim temp As String 1024 分配 1024 个字节缓冲区 Set para doc Range Encode para Text temp 文档加密 para Text temp 设置该段的颜色 para Font Color wdColorBlue End Sub 5 解密

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论