




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
分类号 分类号 TP309 7TP309 7 U U D D C C D10621 408 2007 6124 0D10621 408 2007 6124 0 密密 级 公级 公 开开 编编 号 号 20032120642003212064 成成 都都 信信 息息 工工 程程 学学 院院 学学 位位 论论 文文 基于基于 Misty1Misty1 算法的加密软件 算法的加密软件 VCVC 的实现 的实现 论论文作者姓名 文作者姓名 赵赵蒋英蒋英 申申请请学位学位专业专业 计计算机科学与技算机科学与技术术 申申请请学位学位类别类别 工学学士工学学士 指指导导教教师师姓姓名名 职职称称 陈陈俊俊 讲师讲师 论论文提交日期 文提交日期 2007 年年 06 月月 09 日日 基于基于 Misty1Misty1 算法的加密软件 算法的加密软件 VCVC 的实现 的实现 摘摘 要要 随着计算机网络及通信技术的飞速发展 信息安全成了信息社会急需解决 的最重要的问题之一 密码技术是保证信息安全的核心技术 本文用 C 语言 开发了一个基于 Misty1 算法的加密软件 该软件能对文件进行加密和解密 在 具体实现时 首先分析了 Misty1 算法的基本结构 设计出相应的实施方法 正 确实现了该算法 其次 设计了一个图形用户界面 最后对软件进行了测试 验证了实现方法的正确性 关键词关键词 MISTY1 加密 解密 Design and Implementation of Encryption Software VC Based on MISTY1 Abstract With the rapid development of computer networks technology and communication technology Information security has become one of the most important problems urgent to resolve in information society Cryptographic technology is the core technology to guarantee information security In this paper a encryption software based on Misty1 algorithm is developed by using C plus plus language It can encrypt and decrypt a file During the process of implementation the basic structure of the algorithm is analyzed first and the counterpart method is designed secondly a GUI is designed finally the software is tested the result shows that method of implementation is right Key words MISTY1 Encryption Decryption 目目 录录 论文总页数 28 页 1引言 1 1 1课题背景 1 1 2国内外研究现状 1 1 3本课题研究的意义 1 1 4实验环境和预期结果 3 2MISTY1 算法的描述及用于文件加密的意义 3 2 1MISTY1 算法的描述和应用 3 2 1 1密钥产生部分 3 2 1 2数据随机化部分 4 2 2MISTY1 应用于文件加密的意义 13 3加密软件的设计和实现 14 3 1软件功能分析 14 3 2MISTY1 的C 实现 14 3 3加密软件的界面设计 16 3 4加密软件的界面编码 17 3 4 1文件加密 17 3 4 2文件解密 19 3 4 3文件浏览 保存 20 3 4 4文件加密 解密演示 21 4软件测试 21 结 论 26 参考文献 26 致 谢 27 声 明 28 第 1 页 共 28 页 1 1 引言引言 1 11 1 课题背景课题背景 随着我国对计算机的普及 计算机和通信技术已经在我国得到了广泛发展 及应用 从而使我们对信息的安全存储 安全处理和安全传输的需要越来越迫 切 特别在 INTERNET 的应用中 以及个人通信 个人电子身份证 办公自动化 电子邮件 电子自动转帐支付系统和自动零售业务网的建立与实现 信息的安 全保护问题已经显得十分突出 而能够解决这一问题的一个有效手段就是使用 现代密码技术 密码的应用可以一直追述到很久以前 但对于现代密码学 是始于 20 世纪 70 年代 密码学新方向 的发表和美国数据加密标准 DES 的颁布实施 从此揭 开了商用密码研究的序幕 实用密码体制的研究基本上沿着两个方向进行 即 以 RSA 为代表的公开密钥密码体制和以 DES 为代表的秘密密钥分组密码体制 分组密码具有速度快 易于标准化和便于软硬件实现等特点 通常是信息与网 络安全中实现数据加密 数字签名 认证及密钥管理的核心体制 它在计算机 通信和信息系统安全领域有着最广泛的应用 1 21 2 国内外研究现国内外研究现状状 目前分组密码所采用的整体结构可分为 Feistel 结构 例如 CAST 256 DEAL DFC E2 等 SP 网络 例如 Safer Serpent 等 及其他密码结 构 例如 Frog 和 HPC 加解密相似是 Feistel 型密码的一个实现优点 但它 在密码的扩散似乎有些慢 例如需要两轮才能改变输入的每一个比特 SP 的网 络结构非常清晰 S 一般被称为混淆层 主要起混淆作用 P 一般被称为扩散层 主要起扩散作用 在明确 S 和 P 的某些密码指标后 设计者能估计 SP 型密码抵 抗差分密码分析和线性密码分析的能力 SP 网络和 Feistel 网络相比 可以得 到更快速的扩散 但是 SP 密码的加 解密通常不相似 目前对分组密码安全的讨论主要包括差分密码分析 线性密码分析和强力 攻击等 从理论上讲 差分密码分析和线性密码分析是目前攻击分组密码的最 有效的方法 而从实际上说 强力攻击是攻击分组密码最可靠的方法 到目前 为止 已有大量文献讨论各种分组密码的安全性 同时推出了譬如截断差分分 析 非线性密码分析及插值攻击等多种分析方法 自 AES 候选算法公布以后 国内外许多专家学者都致力于候选算法的安全分析 预计将会推出一些新的攻 击方法 这无疑将进一步推动分组密码的发展 1 31 3 本课题研究的意义本课题研究的意义 1 加密算法标准化的需要 标准化是工业社会的一个基本概念 它意味着生产规模化 降低成本 方 第 2 页 共 28 页 便维修和更换为了实现非相关团体之间的保密通信 加密体制的标准化是必要 的 分组密码由于其固有特点 已经成为标准化进程的首选体制 1977 年美国 国家标准局颁布了联邦信息处理标准 DES 以保护非机密信息在存储和传输过程 中免受未经授权的篡改或泄露 此后 DES 作为数据加密的工业标准 得到了 IBM 等计算机制造厂商的大力支持 并陆续被其他组织机构所采 1979 年美国银 行家协会批准使用 DES 1980 年 DES 又成为美国标准化协会 ANSI 的标准 继 而 DES 也受到国际标准化组织 ISO 的关注 l984 年成立的数据加密技术委员 会 SC20 准备在 DES 基础上制定数据加密的国际标准 尽管 DES 是目前世界上使 用最广和最成功的算法 但是它的 56 比特密钥对今天的许多安全应用已太短了 三 重 DES 作为临时的解决方案已出现在许多像银行这类安全性高的应用中 但是对 于某些应用 它的加密速度太慢 最根本的是 当同一密钥加密大量数据时 DES 的 64 比特分组长度为密码攻击开了方便之门 正是由于这些原因 1997 年 4 月 15 日美国国家标准技术研究所 NIST 发起征集 AE5 Advanced Encryption Standard 算法的活动 并专门成立了 AES 工作组 目的是为了确定一个非保密的 公开披露的 全球免费使用的分组密码算法 用于保护下一世纪政府的敏感信息 也 希望 AES 能够成为秘密和公开部门的数据加密标准 2 加密算法本土化的需要 信息安全的最大特点之一是自主性 因而其核心技术 密码学的研究与 开发应当是一种本土性的科学 对于有些产品 可以通过外方引进来解决由于 技术落后而带来的问题 然而对于安全产品 除非能完全确信它在硬件和软件 上没有陷门 否则 贸然使用可能带来不可预测的后果 而要做到软硬件上的 确认通常是十分困难的 因此 最明智的方法是依靠自己的力量并汲取现有的 先进经验进行研究 设计和开发 3 官方组织维护通信和社会安全的需要 为了维护通信安全 打击犯罪 1993 年 4 月 美国政府宣布了一项新的建 议 该建议倡导联邦政府和工业界使用新的具有密钥托管功能的联邦加密标准 该建议称为托管加密标准 escrowed encryption standard EES 又称 C1ipper 建议 其目的是为用户提供更好的安全通信方式 同时允许政府机构 在必要情况下进行监听 EES 系统中嵌入了分组加密算法 Sk ipjack 尽管目 前对该系统和算法有许多争议 但从维护国家通信安全的角度 这项建议是有 积极意义的 4 多级安全的需要 在区域通信系统中 用户较多 他们的地位 作用都不相同 所流通的信 息的重要性也不可能完全相同 因此他们要求得到的安全保护等级也不应该相 第 3 页 共 28 页 同 由此可见 研究多安全级密码算法非常必要 迭代分组密码 所谓选代分组 密码就是以迭代一个简单的轮函数为基础的密码 即通过选择某个较简单的密 码变换 在密钥控制下以迭代方式多次利用它进行加密变换 例如 Feistel 型 密码就是一种选代密码 是分组密码的典型代表 其数学思想简单而灵巧 特 别是在相同的轮函数之下 迭代次数的不同即代表了安全强度的不同级别 5 网络安全通信的需要 在 Internet Intranet 中随着通信量和业务种类的增加 对安全认证和保 密业务的需求日益迫切 比如 PGP Pretty Good Privacy 就是一种广泛应用 于 Internet 中 E mail 系统的一种安全技术方案 它也可以用于其他网络中 PGP 的安全业务包括机密性 认证性 不可抵赖性等 其中的机密性就是利用 分组密码算法 IDEA 来保证的 另外 分组密码的工作模式可提供一些人们所需 要的其他密码技术 比如流密码技术和杂凑技术等 1 41 4 实验环境和预期结果实验环境和预期结果 基于 WINDOWS XP 平台 Visual C 6 0 编程和 MFC 库的应用 使用 C 语言 进行程序编译 实现 MISTY1 算法的编译 使用 MFC 编程实现文件 文本文件或 BMP 文件 的加密 以及加解密正确性的演示 2 2MISTY1MISTY1 算法的描述及用于文件加密的意义算法的描述及用于文件加密的意义 2 12 1 MISTY1MISTY1 算法的描述和应用算法的描述和应用 MISTY1 算法是用 128 位密钥对 64 位数据进行不确定轮数的加密 它在设 计时就采用了经证实可以抵抗密码差分分析和线形分析的安全理论 而且它实 现了在硬件环境和软件环境下都比较高的加密速度 算法可以分为两部分 一 部分是密钥的产生部分 另一部分是数据随机化部分 密钥产生部分根据 128 位的输入密钥 产生 128 位的扩展密钥 数据随机化部分输入 64 位的数据进行 混合 也就是所谓的加密 2 1 12 1 1 密钥产生部分密钥产生部分 如图1所示 K为输入密钥 K是128位 K 为扩展密钥 扩展密钥是由函数FI从 K 1 K 8中产生 并存储在K 9 K 16中 首先把K分为八份 Ki 1 i 8 每个的长度为16位 然后Ki和Ki 1输入到函数FI中 FI模的输出是 16位的K i 1 i 8 K9 K1 第 4 页 共 28 页 图1 密钥扩展 K K1 K2 K3 K4 K5 K6 K7 K8 For i 1 to 8 do K i FI Ki Ki 1 K K 1 K 2 K 3 K 4 K 5 K 6 K 7 K 8 2 1 22 1 2 数据随机化部分数据随机化部分 数据随机化部分使用了两种函数 FO和FL 函数FO调用函数FI 密钥扩展 部分也使用函数FI FI函数使用两个S盒 S7和S9 算法描述 使用了一些运算 符 表示两个元素的相加 表示乘 表示取相除的商 表示取余数 S9 167 239 161 379 391 334 9 338 38 226 48 358 452 385 90 397 183 253 147 331 415 340 51 362 306 500 262 82 216 159 356 177 175 241 489 37 206 17 0 333 44 254 378 58 143 220 81 400 95 3 315 245 54 235 218 405 472 264 172 494 371 290 399 76 165 197 395 121 257 480 423 212 240 28 462 176 406 507 288 223 501 407 249 265 89 186 221 428 164 74 440 196 458 421 350 163 232 158 134 354 13 250 491 142 191 69 193 425 152 227 366 135 344 300 276 242 437 320 113 278 11 243 87 317 36 93 496 27 487 446 482 41 68 156 457 131 326 403 339 20 39 115 442 124 475 384 508 53 112 170 479 151 126 169 73 268 279 321 168 364 363 292 46 499 393 327 324 24 456 267 157 460 488 426 309 229 439 506 208 271 349 401 434 236 16 209 359 52 56 120 199 277 465 416 252 287 246 6 83 305 420 345 153 502 65 61 244 282 173 222 418 67 386 368 261 101 476 291 195 430 49 79 166 330 280 383 373 128 382 408 155 495 367 388 274 107 459 417 62 454 132 225 203 316 234 14 301 91 503 286 424 211 347 307 140 374 35 103 125 427 19 214 453 146 498 314 444 230 256 329 198 285 50 116 78 410 10 205 510 171 231 45 139 467 29 86 505 32 第 9 页 共 28 页 72 26 342 150 313 490 431 238 411 325 149 473 40 119 174 355 185 233 389 71 448 273 372 55 110 178 322 12 469 392 369 190 1 109 375 137 181 88 75 308 260 484 98 272 370 275 412 111 336 318 4 504 492 259 304 77 337 435 21 357 303 332 483 18 47 85 25 497 474 289 100 269 296 478 270 106 31 104 433 84 414 486 394 96 99 154 511 148 413 361 409 255 162 215 302 201 266 351 343 144 441 365 108 298 251 34 182 509 138 210 335 133 311 352 328 141 396 346 123 319 450 281 429 228 443 481 92 404 485 422 248 297 23 213 130 466 22 217 283 70 294 360 419 127 312 377 7 468 194 2 117 295 463 258 224 447 247 187 80 398 284 353 105 390 299 471 470 184 57 200 348 63 204 188 33 451 97 30 310 219 94 160 129 493 64 179 263 102 189 207 114 402 438 477 387 122 192 42 381 5 145 118 180 449 293 323 136 380 43 66 60 455 341 445 202 432 8 237 15 376 436 464 59 461 6 6 加密函数加密函数 加密操作如图 7 第 10 页 共 28 页 图 6 加密过程 64 位的明文输入 P 分为两部份分别为 32 位 L0和 R0 在第一轮和之后的每 两个轮回中 左边和右边的两部分 Li 1和 Ri 1分别与 KLi通过 FL 函数产生 32 位 的输出 在每次轮回中的左边部份调用接受 32 位输入和 16 位的工作密钥 KIi 以及 16 位的工作密钥 KOi的 FO 函数 产生 32 位的输出 在每一次轮回中 左 边部分和右边部分相互交换给 Li和 Ri 经过 8 次轮回最后一次调用 KL 函数得 到左部和右部 然后再作出最后的重组左边和右边即 Ln 1和 Rn 1产生 64 位输出 C64 其中 n 是轮回的次数 一般为 8 其中加密输入为 P L0 R0 KL KLi KO KOi KI KIi 加密函数则是 For i 1 3 n 1 Ri FL Li 1 KLi Li FL Ri 1 KLi 1 FO Ri KOi KIi 第 11 页 共 28 页 Li 1 Ri FO Li KOi 2 KIi 1 Ri 1 Li for i n 1 Ri FL Li 1 KLi Li FL Ri 1 KLi 1 最后输出 C Ln 1 Rn 1 下面是加密代码 void misty1 Encrypt BYTE ptext BYTE userkey BYTE ctext DWORD L0 L1 L2 L3 L4 L5 L6 L7 L8 L9 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 临时明 文 密文 KeySchedule userkey 密钥调度 产生加密密钥 L0 DWORD ptext 0 24 DWORD ptext 1 16 DWORD ptext 2 8 DWORD ptext 3 R0 DWORD ptext 4 24 DWORD ptext 5 16 DWORD ptext 6 24 ctext 1 BYTE L9 16 cte xt 2 BYTE L9 8 ctext 3 BYTE L9 ctext 4 BYTE R9 24 ctext 5 BYTE R9 16 cte xt 6 BYTE R9 8 ctext 7 BYTE R9 7 7 解密函数解密函数 解密函数运行如图 8 与加密运行完全相同 只需要改变两项 1 FL 1 函数取代所有的 FL 函数 2 函数中的子密钥的应用都扭转 图7 解密过程 具体代码 Void misty1 Decrypt BYTE ctext BYTE userkey BYTE ptext DWORD L0 L1 L2 L3 L4 L5 L6 L7 L8 L9 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 临时明 文 密文 第 13 页 共 28 页 KeySchedule userkey 密钥调度 产生解密密钥 L9 DWORD ctext 0 24 DWORD ctext 1 16 DWORD ctext 2 8 DWORD ctext 3 R9 DWORD ctext 4 24 DWORD ctext 5 16 DWORD ctext 6 24 ptext 1 BYTE L0 16 pte xt 2 BYTE L0 8 ptext 3 BYTE L0 ptext 4 BYTE R0 24 ptext 5 BYTE R0 16 pte xt 6 BYTE R0 8 ptext 7 BYTE R0 2 22 2 MISTY1MISTY1 应用于文件加密的意义应用于文件加密的意义 加密技术是电子商务采取的主要安全保密措施 是最常用的安全保密手段 利用技术手段把重要的数据变为乱码 加密 传送 到达目的地后再用相同或 不同的手段还原 解密 加密技术包括两个元素 算法和密钥 算法是将普 通的文本 或者可以理解的信息 与一窜数字 密钥 的结合 产生不可理解 的密文的步骤 密钥是用来对数据进行编码和解码的一种算法 在安全保密中 第 14 页 共 28 页 可通过适当的密钥加密技术和管理机制来保证网络的信息通讯安全 密钥加密 技术的密码体制分为对称密钥体制和非对称密钥体制两种 相应地 对数据加 密的技术分为两类 即对称加密 私人密钥加密 和非对称加密 公开密钥加 密 对称加密加密密钥和解密密钥相同 加密信息的安全性取决于密钥的安 全性 与算法的安全性无关 即由密文和加解密算法不可能得到明文 换句话 说算法无需保密 需保密的仅是密钥 由于 MISTY1 算法取得了良好的良好的阻 力线和鉴别攻击 而且还使能实行以相对较少的逻辑组件中执行函数的程度相对 较低 所以在更大程度上保证了加密后的文件的安全性 对于带有重要信息的小型文本和二进制数据的维护 如果不加密 将无 法放心的保存在计算机上 尤其是连网的或机房里的公共计算机 如果借助 功能强大的大型多用户数据保护程序维护几个小型文件 显得十分烦琐 好比 杀鸡用牛刀 所以 对于使用小型文件进行数据交换的情况 更好的方案是通 过一个小型应用程序对这些文件进行对称密钥加密 使用 MISTY1 加密文件有两点重要意义 应用对称密钥加密文件 文本文 件或 BMP 文件 有利地加大了加密文件的不可破解性 加强了文件的安全性 加密后的数据变换成文本 使得我们可以通过几乎任何方式安全传递任意文 件 比如在只有 http 的环境使用 xml 方式 3 3加密软件的设计和实现加密软件的设计和实现 3 13 1 软件功能分析软件功能分析 软件要求如下 1 实现对加 解密正确性的演示 2 对文件 文本文件或 BMP 文件 进行加密 并能对加密文件进行解密 分析图如下 图 8 流程图 所以说要进行编码的程序有 1 MISTY1 算法的 c 语言实现 能实现正确的加密解密 2 图形界面的设计与编码 第 15 页 共 28 页 3 23 2 MISTY1MISTY1 的的 c c 实现实现 由于我们使用的是MFC编程方式 因此为了更好的体现面向对象的编程思想 我们将MISTY1算法用一个C 类来实现 其关键代码如下 DWORD misty1 FL DWORD X DWORD KEY DWORD XL XR KL KR YL YR XL X 16 XR X KL KEY 16 KR KEY YR XL YL YR KR XL Return YL 16 YR Y KL KEY 16 KR KEY XL YR KR YL XR XL Return XL 16 L1 WORD X R2 FI L1 KO 1 KI 1 R1 L2 R1 R3 FI L2 KO 2 KI 2 R2 L3 R2 KO 3 Return DWORD L3 7 L1 X R2 S7 L1 R1 L2 R1 KI R3 S9 L2 R2 L3 R2 Return L3 9 R3 Void misty1 KeySchedule BYTE userkey WORD tempkey1 16 tempkey2 16 int i for i 0 i 8 i tempkey1 i WORD userkey i 2 8 WORD userkey i 2 1 for i 0 i 8 i tempkey2 i FI tempkey1 i tempkey1 i 1 8 for i 0 i 8 i KO 4 i tempkey1 i KO 4 i 1 tempkey1 i 2 8 KO 4 i 2 tempkey 1 i 7 8 KO 4 i 3 tempkey1 i 4 8 KI 3 i tempkey2 i 5 8 KI 3 i 1 tempkey2 i 1 8 KI 3 i 2 t empkey2 i 3 8 for i 0 i 10 i if i 2 0 KL i DWORD tempkey1 i 1 2 16 DWORD tempkey2 i 1 2 6 8 else KL i DWORD tempkey2 i 2 2 16 DWORD tempkey1 i 2 4 8 第 17 页 共 28 页 3 33 3 加密软件的界面设计加密软件的界面设计 文件加密 解密是将要加密 解密的文件中的数据存入数据缓存 调用 MISTY1 的加密 解密函数 对缓存中的数据进行加密 解密 最后将加密 解密 都的文件存入指定的路径 这样就完成了文件的加密 解密 程序的设计主要是利用 Microsoft Visual C 6 0 的 MFC 编程来完成对加 密软件界面的实现 界面中的控件及其属性如下各表所示 表 1 控件属性 控件类型属性属性值 Statie TextCaption输入文件 Statie TextCaption密码 Statie TextCaption保存文件 Edit BoxCaptionIDC EDIT1 Edit BoxCaptionIDC EDIT2 Edit BoxCaptionIDC EDIT3 表 2 控件属性 控件类型控件 ID属性属性值 ButtouIDC BUTTON1Caption 加密 ButtouIDC BUTTON2Caption解密 ButtouIDC BUTTON3Caption浏览 ButtouIDC BUTTON4Caption保存 表 3 控件属性 控件 ID变量类型变量名称 IDC EDIT1Cstringm filename IDC EDIT2Cstringm filekey IDC EDIT3Cstringm savefile 第 18 页 共 28 页 3 43 4 加密软件的界面编码加密软件的界面编码 3 4 13 4 1 文件加密文件加密 在文件加密过程中 把需要加密的文件中的数据读入缓存中 取得文件数 据的长度 由于 MISTY1 加密算法每次只能实现对 64 位即 8 字节的数据进行加 密 所以将先文件总长度除以 8 求出它的倍数 c 和余数 d 在加密的时候 先 依次对每 8 字节进行加密进行 c 次 然后对最后剩下的 d 个字节进行加密 由 于最后数据不满 8 字节 所以在加密之前需要进行填充 至少在数据后面填充 一个字节 使其长度为 8 字节的整倍数 当文件为 BMP 文件的时候 加密的时 候先将文件头 8 字节的数据依次读出 在对除去前 8 字节的数据进行加密 其 加密过程与文本文件加密相同 其具体代码如下 Void CMisty1lxpDlg Onfileenc 文件加密 UpdateData TRUE if m filename return CFile ff m filename CFile modeRead long lFileLen ff GetLength 文件长度 long c lFileLen 8 long d lFileLen 8 CString fileext m filename Right 4 CString filename m filename Left m filename GetLength 4 if m savefile m savefile filename 已加密 fileext CFile fp m savefile CFile modeCreate CFile modeWrite fp SeekToBegin ff SeekToBegin CFile modeCreate 创建方式打开文件 如文件已存在则将其长度设置为 0 CFile modeReadWrite 读写方式打开文件 misty1 mistyk unsigned char inbuff 8 oubuff 8 skey 16 memcpy skey LPCTSTR m filekey 16 if fileext T bmp ff Read m bmphead 64 fp Write m bmphead 64 for long i 8 i c i ff Read inbuff 8 mistyk Encrypt unsigned char inbuff unsigned char skey oubuff fp Write oubuff 8 第 19 页 共 28 页 else for long i 0 i0 ff Read inbuff d mistyk Encrypt unsigned char inbuff unsigned char skey oubuff fp Write oubuff 8 ff Close fp Close AfxMessageBox 加密成功 UpdateData FALSE 3 4 23 4 2 文件解密文件解密 文件解密是加密的逆过程 具体代码如下 void CMisty1lxpDlg Onfiledec 文件解密 UpdateData TRUE if m filename MessageBox 请选择文件 return CString fileext m filename Right 4 CFile fp m filename CFile modeRead if m savefile m savefile m filename Left m filename GetLength 12 已解密 fileext CFile ff m savefile CFile modeCreate CFile modeWrite long lFileLen fp GetLength long c lFileLen 8 long d lFileLen 8 fp SeekToBegin 第 20 页 共 28 页 ff SeekToBegin misty1 mistyk unsigned char inbuff 8 oubuff 8 skey 16 memcpy skey LPCTSTR m filekey 16 if m filename Right 4 T bmp fp Read m bmphead 64 ff Write m bmphead 64 for long i 8 i c i fp Read inbuff 8 mistyk Decrypt unsigned char inbuff unsigned char skey oubuff ff Write oubuff 8 else for long i 0 i0 fp Read inbuff 8 mistyk Decrypt unsigned char inbuff unsigned char skey oubuff ff Write oubuff 8 ff Close fp Close AfxMessageBox 解密成功 UpdateData FALSE 3 4 33 4 3 文件浏览文件浏览 保存保存 void CMisty1lxpDlg Onopenfile 文件浏览 UpdateData TRUE 第 21 页 共 28 页 CFileDialog dlg 1 NULL NULL OFN HIDEREADONLY All Files if IDOK dlg DoModal return m filename dlg GetPathName UpdateData FALSE void CMisty1lxpDlg Onsavefile 文件保存 UpdateData TRUE CFileDialog dlg 1 NULL NULL OFN HIDEREADONLY All Files if IDOK dlg DoModal return m savefile dlg GetPathName UpdateData FALSE 3 4 43 4 4 文件加密文件加密 解密演示解密演示 加解密正确行的演示只是对 MISTY1 算法的实现的正确性进性验证 当明文 超过 8 字节时 在加密或解密过程中只需要取 8 字节的明文进行加密或解密 然而当明文不足 8 字节的时候 那么将在明文后面填充字节 使其长度为 8 字 节的整倍数 这里只要完成对响应函数的调用就有可以了 4 4软件测试软件测试 运行程序 按照界面提示操作 主要显示如下 1 按提示输入相应信息 如图 9 第 22 页 共 28 页 图 9 加密提示操作 2 加密操作 点击 文件加密 按扭 如图 10 将提示你操作成功 图 10 加密操作成功提示 3 查看加密后按指定路径保存的文本文档 如图 11 第 23 页 共 28 页 图 11 加密
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 危化品上岗证考试试题及答案
- 解析卷人教版八年级上册物理声现象《声音的特性声的利用》综合测试练习题(含答案详解)
- 衡水摩托考试题型及答案
- 高速公路融资业务咨询服务协议5篇
- 考点攻克人教版八年级上册物理声现象《噪声的危害和控制》综合练习试卷(解析版含答案)
- 2026年中考数学第一轮复习《数字、代数式规律》附答案
- 国家篮球e级教练员考试试题及答案
- 龙海市小学毕业考试题及答案
- 交大高等数学考试题库及答案
- 单反相机考试题库及答案
- 2025年富通集团有限公司校园招聘模拟试题完整
- 汽车衡过磅管理制度
- 厨部成本控制培训
- 2024北森图形推理题
- 预防性安全检查课件
- 2025-2030中国智慧体育产业市场发展分析及前景趋势与投资研究报告
- 公司两班倒管理制度
- 她力量自有光课件-高二下学期三八妇女节主题班会
- 2025年高级人工智能训练师(三级)理论考试题库-含答案
- 开关门礼仪培训
- 突发事件应急指挥与领导能力培养
评论
0/150
提交评论