基于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加密插件的实现—计算机毕业设计
相关推荐
1、光世昌老师高中物理精品资源免费下载地址 :鄂南高中 出题人:沈文炳 化学备课组 生物备课组 审题人:周胜江 鲍敏 陈元阳考试时间:2014 年 12 月 12 日上午 9:0011:30 试卷满分 300 分 考试用时 150 分钟注意事项:1答题前,考生务必将自己的姓名、班级、准考证号填写在答题卡上,并将准考证号条形码粘贴在答题卡上的指定位置。 用2B 铅笔将答题卡上试卷类型 A 方框涂黑
因此 ,在想控制音符的音长 ,就必须知道乐曲的速度和每个音 符所对应的节拍数 ,在这个设计中所播放的乐曲的最短的音符为四分音符 ,如果将全音符的持续时间设为 1s 的话 ,那么一拍所应该持续的时间为 ,则只需要再提供一个 4HZ的时钟频率即可产生四分音符的时长 .要想让系统知道现在应该播放哪个音符 ,而这个音符持续的时间应该是多少 ,就必须编写乐曲文件 ,在乐曲文件中音符是按地址存放的
图 33 速度模块框图 计程模块 此模块主要用于记录行进的距离,其模块框图如图 34 所示。 通过对 clkout 信号的计数,可以计算行驶的距离 kmcount。 一个 clkout 脉冲相当于行进 100m 所以只要记录clkout 的脉冲数目即可确定 共行进的距离。 Kmcount1 为十分位, kmcount2 为个位,kmcount3 为十位,分别为十进制数。 图 34 计程模块框图
振荡器产生基准时钟信号。 IN+, IN是运放的同相和反相输入。 GS是增益选择端, VREFIN+1IN2OSC16R/W9CS10RS011CLK212GS3VREF4OSC27TONE8EST18ST/GT19IRQ/CP13VSS5D014D115D216D317VDD20MT8880东北大学毕业设计(论文) 第 3章 主模块设计 奠劝荪派 奠劝荪派 11 奠劝荪派 是基准电压输出端
1、高中物理资源下载平台世昌的博客 (二)理科综合试卷本 试 卷 共 6 页 , 共 40 题。 满分300分,考试用时150分钟。 祝考试顺利注意事项:1答题前,考生务必将自己的姓名、班级、准考证号填写在答题卡上,并将准考证号条形码粘贴在答题卡上的指定位置。 用2B 铅笔将答题卡上试卷类型 A 方框涂黑。 2选择题的作答:每小题选出答案后,用 2B 铅笔把答题卡上对应题目的答案标号涂黑
1、高中物理资源下载平台世昌的博客 生物试题L、下列对物质跨膜运输方式的叙述正确的是A、水分子是从溶液浓度高的地方向溶液浓度低的地方跨膜扩散B、主动运输的过程一定消耗细胞代谢产生的能量C、酒精、甘油等物质一定要借助于载体才能进入细胞D、离子、通过观察澄清石灰水是否变浑浊来判断酵母菌的呼吸方式B、哺乳动物成熟的红细胞既能进行有氧呼吸,又能进行无氧呼吸C、在进行无氧呼吸时