网站大量收购独家精品文档,联系QQ:2885784924

DES_加密解密算法的C++实现--实验报告讲述.doc

DES_加密解密算法的C++实现--实验报告讲述.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DES_加密解密算法的C实现--实验报告讲述

1? ? 实验一? 1、实验题目? ?? 利用C/C++编程实现DES加密算法或MD5加密算法。我选择的是用C++语言实现 ? DES的加密算法。? 2、实验目的? ?? 通过编码实现DES算法或MD5算法,深入掌握算法的加密原理,理解其实际应用? 价值,同时要求用C/C++语言实现该算法,让我们从底层开始熟悉该算法的实现过程? 3、实验环境? 操作系统:WIN7旗舰版? 开发工具:Visual?Studio?2010旗舰版?开发语言:C++? 4、实验原理? ? ? DES加密流程 2? ? ?如上图所示为DES的加密流程,其中主要包含初始置换,压缩换位1,压缩换位2,扩 展置换,S盒置换,异或运算、终结置换等过程。????初始置换是按照初始置换表将64位明文重新排列次序????扩展置换是将原32为数据扩展为48位数据,它主要由三个目的:???1、产生与子密钥相同的长度???2、提供更长的结果,使其在加密过程中可以被压缩??? 3、产生雪崩效应,使得输入的一位将影响两个替换? ???S盒置换是DES算法中最核心的内容,在DES中,只有S盒置换是非线性的,它比DES???中其他任何一步都提供更好的安全性? ???终结置换与初始置换相对应,它们都不影响DES的安全性,主要目的是为了更容易将???明文与密文数据一字节大小放入DES的f算法中? ? DES解密流程与加密流程基本相同,只不过在进行16轮迭代元算时,将子密钥生成的 K的次序倒过来进行迭代运算? 5、实验过程记录? ? 在对DES算法有了清晰的认识后,编码过程中我将其分为几个关键部分分别进行编码,最后将整个过程按顺序执行,即可完成DES的加密,代码的主要几个函数如下:? //Byte转为Bit? ByteToBit(ElemType?ch,ElemType?bit[8])?????//Bit转为Byte? BitToByte(ElemType?bit[8],ElemType?ch)??//初始置换? InitialEX(ElemType?Inorder[64],ElemType?Disorder[64])?//终结置换? AntiEx(ElemType?Disorder[64])?//扩展置换? ExpandEX(ElemType?RightMsg[32],ElemType?ExpandMsg[48])?//16轮迭代加密? MoveLeft(ElemType?C[28],ElemType?D[28],ElemType?L0[32],ElemType?R0[32])?? 3? ? //16轮迭代解密? mMoveLeft(ElemType?C[28],ElemType?D[28],ElemType?L0[32],ElemType?R0[32])? //生成48位子密钥? GetCD48(ElemType?C[28],ElemType?D[28],ElemType?Secret[48])?//48位明文与子密钥进行异或运算? XOR(ElemType?ExpandMsg[48],ElemType?Secret[48],ElemType?Result[48])?//S盒四位输出? getSOut(ElemType?Result[48],ElemType?Sout[32])?//直接置换? DirExchange(ElemType?Sout[32],ElemType?DirOut[32])?//Li与Ri进行抑或运算? XORLR(ElemType?DirOut[32],ElemType?Left[32],ElemType?Result[32])?? 函数执行次序和调用关系关系如下:? ? ? 6.源代码 ? ? ? //?DES.cpp?:?定义控制台应用程序的入口点。?//?? #include?stdafx.h?#include?function.h?#include?iostream?#includebitset?#includestring?using?namespace?std;?? ? //置换矩阵? int?IP_EX[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? };? ?

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档