des课程设计(3)

2019-08-28 23:26

scanf(\ for(i=0;i<16;n++,i++) { if(M[i]<60) s=M[i]-48; else if(M[i]<90) s=M[i]-55; else s=M[i]-87; change(s,num); if(4*(n+1)%8==0) h=4*(n+1)/8-1; else

h=4*(n+1)/8; if((n+1)%2==0) l=4; else l=0;

for(j=0;j<4;j++) mw[h][l++]=num[j]; }

}

//ipbiao函数将自动生成64位的ip置换表上下差2,左右差8 void ipbiao(int ip [8][8]) {

long i,j,k; for(j=0;j<4;j++) {

i=2+j*2; for(k=7;k>=0;k--)

{

ip[j][k]=i;

i+=8; }

}

for(j=4;j<8;j++) {

i=1+(j-4)*2; for(k=7;k>=0;k--)

{

ip[j][k]=i;

i+=8; }

}

}

//初始置换函数 将64bit 按ip表重新排列 void InitRep (int mw [8][8],int tem[8][8]) {

int i,j,h,l,a; int ip[8][8];

ipbiao(ip); //产生ip表函数 for(i=0;i<8;i++) for(j=0;j<8;j++) {

a=ip[i][j]; if(a%8==0) { h=a/8-1; l=7; } else { h=a/8; l=a%8-1; }

}

tem[i][j]=mw[h][l]; }

//划分函数,将64位bit 分为两个32位 void BreakLR (int tem [8][8] ,int L [32] ,int R [32]) { int h,l,i; i=0;

for (h=0;h<4;h++) for(l=0;l<8;l++) L[i++]=tem[h][l]; i=0;

for (h=4;h<8;h++) for(l=0;l<8;l++) R[i++]=tem[h][l]; } 3、轮加密

DES算法的论结构分为左右两部分32比特在每一轮中被独立处理。如图具体过程为:下一轮左半部分32比特等于上一轮右半部分32比特;而下一轮右半部分的32比特的计算则是由上一轮右半部分和轮密钥输入到F函数中进行变换,变换结果与上一轮左半部分进行异或运算,得到。因此每一轮的变换可由公式表示:

L(i)==R(i-1);

R(i)=L(i-1)⊕F(R(i-1),K(i));

图3-5

a.扩张变换E

将右半部分的32比特,进行E盒扩展,扩展成为48比特。具体变换过程为把输入的32比特E盒扩展之后输出E[8][6]。E[8][6]中每一位与R[32]中的对应关系如图3—6


des课程设计(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:阜城县第二中学逃生演练活动方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: