1 / 11
文档名称:

DES加密算法实验报告.doc

格式:doc   大小:176KB   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

DES加密算法实验报告.doc

上传人:xgs758698 2016/8/4 文件大小:176 KB

下载得到文件列表

DES加密算法实验报告.doc

文档介绍

文档介绍:网络安全作业题目 DES 加密算法学号专业及班级网络工程 0902 班姓名日期 一. DES 简介: DES 是一个分组密码算法,使用 64 位密钥(除去 8 位奇偶校验,实际密钥长度为 56 位)对 64 比特的数据分组(二进制数据)加密,产生 64 位密文数据。 DES 是一个对称密码体制, 加密和解密使用同意密钥, 解密和加密使用同一算法( 这样, 在硬件与软件设计时有利于加密单元的重用)。 DES 的所有的保密性均依赖于密钥。二. DES 算法过程: 1. DES 的加密过程: 第一阶段: 初始置换 IP。在第一轮迭代之前, 需要加密的 64 位明文首先通过初始置换 IP 的作用, 对输入分组实施置换。最后, 按照置换顺序, DES 将 64 位的置换结果分为左右两部分,第 1 位到第 32 位记为 L0 ,第 33 位到第 64 位记为 R0 。第二阶段: 16 次迭代变换。 DES 采用了典型的 Feistel 结构, 是一个乘积结构的迭代密码算法。其算法的核心是算法所规定的 16 次迭代变换。 DES 算法的 16 才迭代变换具有相同的结构,每一次迭代变换都以前一次迭代变换的结果和用户密钥扩展得到的子密钥 Ki 作为输入;每一次迭代变换只变换了一半数据,它们将输入数据的右半部分经过函数 f 后将其输出, 与输入数据的左半部分进行异或运算, 并将得到的结果作为新的有半部分, 原来的有半部分变成了新的左半部分。用下面的规则来表示这一过程( 假设第 i 次迭代所得到的结果为 LiRi ): Li= Ri-1; Ri= Li-1 ⊕ f(Ri-1,Ki); 在最后一轮左与右半部分并未变换,而是直接将 R16 L16 并在一起作为未置换的输入。第三阶段:逆( 初始) 置换。他是初始置换 IP 的逆置换, 记为 IP-1 。在对 16 次迭代的结果( R16 L16 )再使用逆置换 IP-1 后,得到的结果即可作为 DES 加密的密文 Y 输出, 即Y= IP-1 ( R16 L16 )。 2. DES 解密过程: DES 的解密算法与其加密算法使用的算法过程相同。两者的不同之处在于解密时子密钥 Ki 的使用顺序与加密时相反,如果子密钥为 K1K2 … K16, 那么解密时子密钥的使用顺序为 K16K15 … K1, 即使用 DES 解密算法进行解密时, 将以 64 位密文作为输入,第1 次迭代运算使用子密钥 K16 ,第2 次迭代运算使用子密钥 K15 , ……,第 16 次迭代使用子密钥 K1 ,其它的运算与加密算法相同。这样,最后输出的是 64 位明文。三. DES 代码实现(程序): 1. 新建头文件 内容如下: Void EncodeMain(); //EncodeMain function void DecodeMain(); //Sorry ,it has not used void Decode(int *str,int *keychar); //decode :input 8 chars,8 keychars void Encode(int *str,int *keychar); //encode: input 8 chars,8 keychars void keyBuild(int *keychar); //create key array void StrtoBin(int *midkey,int *keychar); //change into binary void keyCreate(int *midkey2,int movebit,int i); //call by keyBuild void EncodeData(int *lData,int *rData,int *srt); //encodedata function void F(int *rData,int *key); //F function void Expand(int *rData,int *rDataP); //Expand function void ExchangeS(int *rDataP,int *rData); //S-diagram change void ExchangeP(int *rData); //P change void FillBin(int *rData,int n,int s); void DecodeData(int *str,int *lData,int *rData); //DecodeData from binary int IP1[]={58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28,

最近更新

黑龙江省哈尔滨市单城中学高一政治月考试题含.. 6页

黑龙江省哈尔滨市哈轻中学2021年高二语文下学.. 9页

网络教育毕业自我鉴定(通用5篇) 5页

结婚新郎的爱的宣言(通用140句)(通用8篇).. 14页

精选太阳作文300字(通用23篇) 13页

简单的合同(精选14篇) 29页

端午节给哥哥的短信(精选5篇) 12页

租赁农村房屋租赁合同(通用6篇) 14页

社团宣传部工作计划(通用3篇) 8页

社会实践实习报告(精选8篇) 19页

图书馆建设项目施工方案 41页

电力公司求职信(通用3篇) 4页

理解父母作文(精选8篇) 8页

班主任下学期工作总结(精选6篇) 14页

物流工作实习报告(通用4篇) 9页

爱的教育读书笔记(精选3篇) 3页

黑龙江省哈尔滨市第一综合高级中学高二数学文.. 5页

汽车销售月工作计划(精选8篇) 14页

民间担保借款合同(精选6篇) 16页

武术比赛作文300字(精选2篇) 2页

木工车间管理制度(通用2篇) 5页

有关父亲的作文(精选58篇) 52页

最新的房地产抵押合同(精选2篇) 8页

春节的作文700字(精选6篇) 8页

干支流错峰条件下交汇处堤防渗流稳定性分析 2页

黑龙江省哈尔滨市第十六中学高三数学理上学期.. 7页

黑龙江省哈尔滨市第十二职业中学2022年高二数.. 6页

教师学习总结(精选3篇) 6页

胚胎分割是一种现代生物技术 5页

描写儿童节的作文(精选2篇) 2页