实验报告 DES加密算法的实现_第1页
实验报告 DES加密算法的实现_第2页
实验报告 DES加密算法的实现_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告DES加密算法的实现班级自动化 学号: 姓名:2016年11月13日星期日一、DES加密简述:DES算法是一种对称密码体制,由美国IBM公司在1972年研发。其明文按64位进行 分组,密钥长64位(包含8位校验位),分组后的明文组和56位的密钥按位替代或交 换的方法形成密文组的加密方法。二、DES的实现过程首先通过初始置换表IP对明文进行置换int IP_Table64 = 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,56,48,40,32,24,1

2、6,8。58,50,42,34,26,18,10260,52,44,36,28,20,12462,54,46,38,30,22,14,6;第一个57就是将明文中的第57个元素,放到第1的位置,然后把明文中第49个元素 放到第2的位置,以此类推。之后将换位后的输出分为两局部L0和RO, L0是输出的 左32位,R0是右32位。int DES_IP_Transform(char data64)int ent;char temp64;for(cnt = 0; ent 64; cnt+)tempcnt = dataIP_Tablecnt; memcpy(data,temp,64);return 0;)

3、之后加密函数,将RO通过位选择函数E置换,把本身是32位的R0扩充成48位,与 生成的48位子密钥对应,按位运算。int E_Table48 = 31, 0, 1, 2, 3, 4,3, 4, 5, 6,7, 8,7, 8,9,10,11,12,11,12,13,14,15,16,15,16,17,18,19,20,19,20,21,22,23,24,23,24,25,26,27,28, 27,28,29,30,31, 0;int DES_E_Transform(char data48) int ent;char temp48;for(cnt = 0; ent 48; cnt+)tempcnt

4、 = dataE_Tablecnt; )memcpy(data,temp,48);return 0;然后,将扩充完的RO和子密钥KI进行模2加运算,得到48位的一个串,把这个串 从左到右分为8组,每组6个字符。这里设8组分别为Bl, B2, B3, B4, B5, B6, B7, B8o其中Bj二bib2b3b4b5b6。之后,通过S盒来收缩,然后通过S盒输出的就是 32位的一个串。int DES_SBOX(char data48)int ent;int line,row,output;int curl,cur2;for(cnt = 0; ent 8; cnt+)curl = cnt*6;cu

5、r2 = cnt2;line = (datacurll) + datacurl+5;row = (datacurl+l3) + (datacurl+22)+ (datacurl+3l) + datacurl+4;output = Scntlinerow;datacur2 = (output&0X08)3;datacur2+l = (output&0X04)2;datacur2+2 = (output&0X02)l;datacur2+3 = output&OxOl;)return 0;最后,经过16次迭代运算后。得到L16、R16,for(cnt = 0; ent 16; cnt+)memcpy

6、(copyRightzplainBits+32,32);DES_E_Transform(copyRight);DES_XOR(copyRight,subKeyscnt,48);DES_SBOX(copyRight);DES_P_Transform(copyRight);DES_XOR(plainBits,copyRight,32);if(cnt != 15)DES_Swap(plainBits,plainBits+32);)将此作为输入,进行逆置换,即得到密文输出。逆置换正好是初始置换的逆运算。int IP_l_Table64 = 39,7,47,15,55,23,63,31,38,6,46,

7、14,54,22,62,30,37545,13,53,21,61,29,36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,34,2,42,10,50,18,58,26,33-9,49,17,57,25,32,0,40,8,48,16,56,24;int DES_IP_l_Transform(char data64)int ent;char temp64;for(cnt = 0; ent 64; cnt+)tempcnt = dataIP_l_Tablecnt;)memcpy(data,temp,64);return 0;)子密钥的生成过程首先,先去掉密

8、钥中的奇偶校验位,然后根据选择置换PC-1讲剩下的密钥分成两块C0 和 D0;int DES_PCl_Transform(char key64, char tempbts56)int ent;for(cnt = 0; ent 56; cnt+)tempbtscnt = keyPC_lcnt;return 0;)第二步,将CO和DO进行循环左移变换,生成C1和D1,然后C1和D1合并,通过选 择置换PC-2生成子密钥K1;循环左移:int DES_ROL(char data56, int time) char temp56;memcpy(temp,data,time);memcpy(temp+t

9、ime,data+28,time);memcpy(data,data+time,28-time);memcpy(data+28-time,temp/time);memcpy(data+28/data+28+time,28-time);memcpy(data+56-time,temp+time,time);return 0;)选择置换PC2:int DES_PC2_Transform(char key56, char tempbts48) int ent;for(cnt = 0; ent 48; cnt+)tempbtscnt = keyPC_2cnt; return 0;)第三步,Cl和DI再次经过循环左移变换,生成C2和D2, C2和D2合并,通过选择 置换PC-2生成子密钥K2;第四步,以此类推,需要注意其中循环左移的位数,一共是循环左移十六次,其中 LSI (第一次),LS2 (第二次),LS9, LS16是循环左移一位,其他的都是左移两位。 int M0VE_TIMES16 = 1,17,2,2,2,2,2,1,2,2,2,2,2,2,1;以上为DES加密算法的实现思路。数据解密的算法与加密算法相同,区别在于第B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论