实验10加密与解密算法的实现

实验10加密与解密算法的实现

ID:31737345

大小:176.35 KB

页数:10页

时间:2019-01-17

实验10加密与解密算法的实现_第1页
实验10加密与解密算法的实现_第2页
实验10加密与解密算法的实现_第3页
实验10加密与解密算法的实现_第4页
实验10加密与解密算法的实现_第5页
资源描述:

《实验10加密与解密算法的实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、加密与解密算法的实现数据加密标准(DES)算法是一个分组加密算法。它以64位(8字节)为分组对数据加密,其中有8位(第8、16、24、32、40、48、56和64位)用作奇偶校验位,另外的56位为真正的密钥,保密性依赖于密钥,加密和解密过程使用同一个密钥。本实验通过编写一个DES算法加密/解密程序,介绍数据加密/解密原理和技术。【实验目的】1)理解加密与解密的基本思想。2)掌握DES算法的程序设计流程。3)编写DES加密与解密程序,加深对数据加密与解密的理解,提高网络安全的编程能力。【实验设备及环境】1)WindowsXP操作系

2、统。2)VC++6.0编译环境。【实验任务及内容】1.DES算法流程(1)加密程序设计DES算法的加密过程如图9-10-1所示。图9-10-1DES加密算法流程图设初始置换为1P,运算函数为f,16个子密钥为Ki,则DES加密过程表示如下:LoRo=IP(明文)LoRoRiRi-iKiLi=Ri-i,Ri=Li-i㊉f(Ri-】,Ki),其中,i=1,2,…,16密文二IP"(RisU)(2)解密程序设计DES解密和加密使用相同的算法,唯一不同的是密钥次序相反,即只需要把16个密钥的顺序倒过来。DES解密过程可用符号表示如下:R

3、igL16=IP(密文)Ri-i=Li,Li-)=Ri㊉f(Ri-i,Ki),其中,i=1,2,…,64明文=IP_1(RoLo)2.DES类设计定义一个名为SDKS的类,用以实现标准的DES加解密算法。SDES类定义位于SDKS,h文件中,代码如下:enum{ENCRYPT,DECRYPT};classSDKS{staticstaticstaticstaticstaticstaticstaticstaticpublic:SDES();virtual~SDES();staticstaticstaticstaticstaticst

4、aticstaticstaticstaticcharcharcharcharcharcharcharcharvoidvoidvoidvoidvoidvoidvoidvoidvoidIP_Table[64];//IP置换表IPR_Table[64];E_Table[48];PTable[32];PCl_Table[56];PC2Table[48];L00P_Table[16];SBox[8][4][16];SDES(charOut[8],charTn[8],boolType);//标准DES加/解密SetSubKey(constc

5、harKey[8]);//设置子密钥Ffunc(boolln[32],constboolKi[48]);//f函数S_func(boolOut[32],Transform(bool*0ut,constboolIn[48]);//S盒代替boolconstchar*Table,Xor(bool*InA,constRotateL(bool*In,intlen,ByteToBit(boo1*0ut,constbool*InB,intcharintlen);//异或loop);//循环左移*In,intbits);//BitToByte

6、(char*0ut,constbool*Tn,intbits);//intlen);//变字节组转换成位位组转换成字节};SDES类的实现位于SDES.cpp文件中,代码如下://SDES.cpp:implementstionoftheSDESclass.#include"stdafx.h"#include"DES.h〃#include〃SDES.h〃#ifdef_DEBLG#undefTHISFILEstaticcharTHTS_FTLE[]=_FTLE_;#definenewDEBUG.NEW#endifSDES::SDES

7、(){}SDES::"SDES(){}staticboolSubKey[16][48];//16圈子密钥staticcharTmp[256];//处理数据,将64位数据按照IP表变换charSDES::IPTable[64]={5&50,42,34,26,1&10,2,60,52,44,36,2&20,12,4,62,54,46,3&30,22,14,6,64,56,4&40,32,24,16,&57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21,13,5

8、,63,55,47,39,31,23,15,7};//组合变换后的R[16]L[16]按下表变换得到最后的结果charSDES::IPR_Table[64]={40,&48,16,56,24,64,32,39,7,47,15,55,23,63,31,3&6,46

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。