77范文网 - 专业文章范例文档资料分享平台

DES加密算法课程设计报告

来源:网络收集 时间:2019-01-05 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

软件实现流程图

开始 输入密文和密钥 密文和密钥转换成二进制,存储在文件中 读出64位密文和密钥 64位密钥进行pc-1置换,生成56位 56位比特串分成左右各28位。C[i]与D[i],i=0; C[i]与D[i]左移一位或者两位,由左移表决定左移位数Ls[16].左移产生C[i+1]与D[i+1] C[i+1]与D[i+1]合并为56位比特串,并进行pc-2置换,产生子密钥keys[i+1],i++; i>15 N Y 节点1

加密过程 节点1 64位明文进行IP置换后进行分组Li[32]与Ri[32];i=0 Ri[32]进行E扩展,生成48位比特串。48位比特串与子密钥keys[i+1]进行异或运算。 得到的48位比特串分为8组,进入8个S盒中,并按照S盒的规则输出8个十进制数 将8个十进制数转换为32位比特串。 32位比特串进行P置换,产生新的32位比特串 32位比特串与Li[32]进行异或,产生R(i+1)[32] L(i+1)[32]=Ri[32];i++ N i>15 Y R16[32]在前,L16[32]在后进行合并,合并后进行IP逆置换,即产生密文 结束 1

开始 输入密文和密钥 密文和密钥转换成二进制,存储在文件中 读出64位密文和密钥 64位密钥进行pc-1置换,生成56位 56位比特串分成左右各28位。C[i]与D[i],i=0; C[i]与D[i]左移一位或者两位,由左移表决定左移位数Ls[16].左移产生C[i+1]与D[i+1] C[i+1]与D[i+1]合并为56位比特串,并进行pc-2置换,产生子密钥keys[i+1],i++; i>15 N Y 节点1

加密过程 节点1 64位明文进行IP置换后进行分组Li[32]与Ri[32];i=0 Ri[32]进行E扩展,生成48位比特串。48位比特串与子密钥keys[i+1]进行异或运算。 得到的48位比特串分为8组,进入8个S盒中,并按照S盒的规则输出8个十进制数 将8个十进制数转换为32位比特串。 32位比特串进行P置换,产生新的32位比特串 32位比特串与Li[32]进行异或,产生R(i+1)[32] L(i+1)[32]=Ri[32];i++ N i>15 Y R16[32]在前,L16[32]在后进行合并,合并后进行IP逆置换,即产生密文 结束 2

二、标准DES的加密过程

1、明文与密钥的输入

首先8位ACSII字符的明文与密钥的输入,存放在mingwen[8]和miyao[8]中,然后将这些8位的ASCII字符转换成二进制的64位的明文和密钥,分别存放在mingwenB[64]和miyaoB[64]中,并将二进制的明文和密钥放在文件中 int str[8],i,j,ch,k;

FILE *fp4;fp4=fopen(\明文二进制.txt\ k=0;

for(i=0;i<8;i++) {

ch=mingwen[i]; for(j=0;j<8;j++) {

str[j]=ch%2; ch=ch/2; }

for(j=7;j>=0;j--) {

mingwenB[k]=str[j]; k++;

fprintf(fp4,\ } }

密钥的转换和存储同理。 2、密钥的产生

1)、64位miyaoB[64]经过pc-1置换,生成56位的比特串。定义pc1_Table[56],存放在afterpc1[56]中。

for(i=0;i<56;i++) afterpc1[i]=miyaoB[pc1_Table[i]-1]; 2)、56位比特串分组,生成C0[28]和D0[28] for(i=0;i<28;i++) C0[i]=afterpc1[i];

for(j=0,i=28;i<56;i++,j++) D0[j]=afterpc1[i];

3)、C0[28]、D0[28]进行左移,产生C[16][28]和D[16][28],为进行pc-2置换产生密钥做准备。 for(i=0;i<27;i++) //第一轮数据生成C[0][28]与D[0][28] {

C[0][i]=C0[i+1]; D[0][i]=D0[i+1]; }

C[0][27]=C0[0]; D[0][27]=D0[0];

for(i=1;i<16;i++) //第二轮数据至第十六轮数据生成

3

{ if(i==1||i==8||i==15) { for(j=0;j<27;j++) //左移1位 {

C[i][j]=C[i-1][j+1]; D[i][j]=D[i-1][j+1]; }

C[i][27]=C[i-1][0]; D[i][27]=D[i-1][0]; }

else //左移2位 {

for(j=0;j<26;j++) {

C[i][j]=C[i-1][j+2]; D[i][j]=D[i-1][j+2]; }

C[i][26]=C[i-1][0]; C[i][27]=C[i-1][1]; D[i][26]=D[i-1][0]; D[i][27]=D[i-1][1]; }

} //产生16轮左右数据,为pc-2置换准备。 4)、左右两部分比特串合并,存放在int beforekey[16][56]中 k=0;

for(i=0;i<16;i++) {

for(j=0;j<28;j++)

beforekey[i][j]=C[i][j]; for(k=0;k<28;k++,j++)

beforekey[i][j]=D[i][k]; }

5)、beforekey[16][56]经过pc-2置换,产生16轮密钥keys[16][48], for(i=0;i<16;i++) for(j=0;j<48;j++)

keys[i][j]=beforekey[i][pc_2table[j]-1]; 至此,16轮子密钥产生完毕,为keys[16][48]。 3、密文的产生

1)、明文经过初始置换IP置换。结果放在afterIP[64]中。 for(j=0;j<64;j++) {

afterIP[j]=mingwenB[IP_table[j]-1]; }

2)、明文的第0次分组,左部分L0[32],右部分R0[32]。 for(i=0;i<32;i++)

4

L0[i]=afterIP[i];

for(j=0,i=32;i<64;i++,j++) R0[j]=afterIP[i];

3)、为产生密文,要进行16轮的循环,每次循环生成一个L[i][32]和R[i][32],下面进行第一次循环,生成L[0][32]和R[0][32]。 for(i=0;i<32;i++) //Li=R(i-1) L[0][i]=R0[i];

4)、至于R[0][32]的生成,R[0][32]=L0[32]^f(R0,keys[0])。因此,要首先计算出f值。R0[32]经过E变换,由32位扩展为48位,然后与子密钥进行异或,为进入S盒做准备。结果放在afterER0[48]中 for(i=0;i<48;i++)

afterER0[i]=R0[E_table[i]-1];

5)、E扩展后,与子密钥进行异或,生成进入S盒前的数据。存放在beforeS[48].

for(i=0;i<48;i++)

if(afterER0[i]==keys[0][i]) beforeS[i]=0; else

beforeS[i]=1;

6)、要进入S盒的48位比特串要经过8个不同的S盒,因此,将48位比特串分在8个数组中,放在beforeSBox[8][6]. for(k=0,i=0;i<8;i++) for(j=0;j<6;j++)

{ beforeSBox[i][j]=beforeS[k]; k++; }

7)、进入S盒后,进过8个S盒,每个S盒产生一个十进制的数字,在0~15之间。beforeSBox[i][6]中的6个数字,第0、5位组成了S盒的行号,第1、2、3、4,4位组成了S盒的列号,根据行列选中S盒中的数据作为输出,存放在afterSBox[8]中。

int hang,lie; for(i=0;i<8;i++)

{ hang=beforeSBox[i][0]*2+beforeSBox[i][5];

lie=beforeSBox[i][1]*8+beforeSBox[i][2]*4+beforeSBox[i][3]*2+beforeSBox[i][4];

afterSBox[i]=SBox[i][hang][lie]; }

8)、由S盒出来的8个十进制数字转换成32位的二进制比特串,存放在beroreP[32]中,为接下来的P置换做准备。 k=0; int temp; int str1[4]; for(i=0;i<8;i++) {

temp=afterSBox[i];

5

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库DES加密算法课程设计报告在线全文阅读。

DES加密算法课程设计报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/405766.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: