des课程设计(4)

2019-08-28 23:26

图3-6 代码:

//扩展函数将32位变为48位 首先按R[32]一条龙对E[8][6]赋值,然后再处理多出来的16位

void Extension (int r[32],int E[8][6]) {

int i,h,l; i=0;

while(i<32)

for(h=0;h<8;h++) for(l=1;l<5;l++) E[h][l]=r[i++];

E[0][0]=r[31]; E[0][5]=r[4]; i=9;

for(h=1;h<7;h++) {

E[h][0]=r[4*h-1]; E[h][5]=r[i-1]; i=i+4; }

E[7][0]=r[27]; E[7][5]=r[0]; }

b 异或函数

相同为假,相同为真,将E盒的输出与子密钥进行异或得到的48比特作为S盒的输入。

代码:

//异或函数 r[48]为结果

void XorFun (int E[8][6],int k [48],int r [48]) {

int h,l,a; a=0;

for(h=0;h<8;h++) for(l=0;l<6;l++) {

}

if(E[h][l]!=k[a]) r[a++]=1; else r[a++]=0; }

c .S函数

进入S盒变换,48比特压缩为32比特如图3-7。S盒的安全性能是保证DES算法安全性的源泉,DES算法共有8个不同的S盒,每个S盒接受6位输入,输出4位。8个S盒如图3-8:

图3-7

图3-8

任取一S盒,现在分析S盒的变换过程见图3-9:

图3-9

在其输入

b1,b2,b3,b4,b5,b6

中,计算出

x=b1*2+b6,

y=b5+b4*2+b3*4+b2*8,再从S[i]表中查出x 行,y 列的值Sxy。将Sxy化为二进制,即得Si盒的输出。函数实现中将48位K [48]转换

为SI[8][6]二维数组,一次处理6比特。将8个S盒存成S[8][64]二维数组,则第i个S盒中的X行Y列转化为S[i-1][X*16+Y-1]; 代码:

// F函数中的S函数

void FeiSFun(int k[48],int p [32]) {

int i,ni,pi,h,l,sh,sl,out; int num [4]; int si[8][6]; int

s[8][64]={ {14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7,0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8,4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0,15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13},{15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5,0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15,13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9 },{ 10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8,13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1, 13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7,1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12},{ 7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15,13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9,10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4,3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14},{2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9,14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6,4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14,11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3},{12,1,10,15,9,2,6,


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

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

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

马上注册会员

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