排列码n=4源程序文件(实现语言C++)(2)

2018-11-17 21:36

}//密钥n位求非n位不求非 for(j=0;j<28;j++){ w[31-j]=w[27-j]; } for(j=0;j<4;j++) w[j]=f[j]; for(j=0;j<8;j++){ p[j]=key0[0]&1; key0[0]=rhl(key0[0]); p[j+8]=key0[1]&1; key0[1]=rhl(key0[1]); p[j+16]=key0[2]&1; key0[2]=rhl(key0[2]); p[j+24]=key0[3]&1; key0[3]=rhl(key0[3]); } q=1; for(j=0;j<32;j++){ if(p[j]==1&&w[j]==1&&q==1){w[j]=1;q=1;} else if(p[j]==1&&w[j]==1&&q==0){w[j]=0;q=1;} else if(p[j]==0&&w[j]==0){w[j]=q;q=0;} else if(w[j]!=p[j]&&q==1){w[j]=0;q=1;} else{w[j]=1;q=0;} } for(j=0;j<8;j++){ t[7-j]=w[31-j]; } for(j=0;j<24;j++){ w[31-j]=w[23-j]; } for(j=0;j<8;j++) w[7-j]=t[7-j]; a1=a2=a3=a4=0; for(j=7;j>=0;j--){ a1=a1<<1; a1=a1|w[j]; a2=a2<<1; a2=a2|w[j+8]; a3=a3<<1; a3=a3|w[j+16]; a4=a4<<1; a4=a4|w[j+24]; } key0[0]=a1;key0[1]=a2;key0[2]=a3;key0[3]=a4;

for(j=0;j<4;j++) e[j]=f[j];

for(j=0;j<4;j++) a[j]=e[j];

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

zijie3=zijie3<<1; zijie3=zijie3|a[j];

}

bite5=char(zijie3); fs3.put(bite5); }

fs2.close(); fs3.close(); }

if(choose==3)

cout<<\结束!\<

cout<<\<

// return 0; } }

//取反函数

int reverse(int x) {

x=~x; x=x&1; return x; }

char rhl(char cc) { unsigned char a,b; a=cc<<7; b=cc>>1; cc=a|b; return cc; }

//加密函数中使用的排列码表 void encode() {

switch(remainder) {

case 0: //3 2 0 1

a[0]=c[2];if(d[8]==1) a[0]=reverse(a[0]); a[1]=c[3];if(d[13]==1) a[1]=reverse(a[1]); a[2]=c[1];if(d[6]==1) a[2]=reverse(a[2]); a[3]=c[0];if(d[3]==1) a[3]=reverse(a[3]); break;

case 1: //3 2 1 0

a[0]=c[3];if(d[12]==1) a[0]=reverse(a[0]); a[1]=c[2];if(d[9]==1) a[1]=reverse(a[1]); a[2]=c[1];if(d[6]==1) a[2]=reverse(a[2]); a[3]=c[0];if(d[3]==1) a[3]=reverse(a[3]); break;

case 2: //3 1 2 0

a[0]=c[3];if(d[12]==1) a[0]=reverse(a[0]); a[1]=c[1];if(d[5]==1) a[1]=reverse(a[1]);

; a[2]=c[2];if(d[10]==1) a[2]=reverse(a[2]); a[3]=c[0];if(d[3]==1) a[3]=reverse(a[3]); break;

case 3: //3 1 0 2

a[0]=c[2];if(d[8]==1) a[0]=reverse(a[0]); a[1]=c[1];if(d[5]==1) a[1]=reverse(a[1]); a[2]=c[3];if(d[14]==1) a[2]=reverse(a[2]); a[3]=c[0];if(d[3]==1) a[3]=reverse(a[3]); break;

case 5: //3 0 2 1

a[0]=c[1];if(d[4]==1) a[0]=reverse(a[0]); a[1]=c[3];if(d[13]==1) a[1]=reverse(a[1]); a[2]=c[2];if(d[10]==1) a[2]=reverse(a[2]); a[3]=c[0];if(d[3]==1) a[3]=reverse(a[3]); break;

case 4: //3 0 1 2

a[0]=c[1];if(d[4]==1) a[0]=reverse(a[0]); a[1]=c[2];if(d[9]==1) a[1]=reverse(a[1]); a[2]=c[3];if(d[14]==1) a[2]=reverse(a[2]); a[3]=c[0];if(d[3]==1) a[3]=reverse(a[3]); break;

case 6: //2 3 1 0

a[0]=c[3];if(d[12]==1) a[0]=reverse(a[0]); a[1]=c[2];if(d[9]==1) a[1]=reverse(a[1]); a[2]=c[0];if(d[2]==1) a[2]=reverse(a[2]); a[3]=c[1];if(d[7]==1) a[3]=reverse(a[3]); break;

case 7: //2 3 0 1

a[0]=c[2];if(d[8]==1) a[0]=reverse(a[0]); a[1]=c[3];if(d[13]==1) a[1]=reverse(a[1]); a[2]=c[0];if(d[2]==1) a[2]=reverse(a[2]); a[3]=c[1];if(d[7]==1) a[3]=reverse(a[3]); break;

case 8: //2 1 3 0

a[0]=c[3];if(d[12]==1) a[0]=reverse(a[0]); a[1]=c[1];if(d[5]==1) a[1]=reverse(a[1]); a[2]=c[0];if(d[2]==1) a[2]=reverse(a[2]); a[3]=c[2];if(d[11]==1) a[3]=reverse(a[3]); break;

case 9: //2 1 0 3

a[0]=c[2];if(d[8]==1) a[0]=reverse(a[0]); a[1]=c[1];if(d[5]==1) a[1]=reverse(a[1]); a[2]=c[0];if(d[2]==1) a[2]=reverse(a[2]); a[3]=c[3];if(d[15]==1) a[3]=reverse(a[3]); break;

case 10: //2 0 3 1

a[0]=c[1];if(d[4]==1) a[0]=reverse(a[0]); a[1]=c[3];if(d[13]==1) a[1]=reverse(a[1]); a[2]=c[0];if(d[2]==1) a[2]=reverse(a[2]); a[3]=c[2];if(d[11]==1) a[3]=reverse(a[3]); break;

case 11: //2 0 1 3

a[0]=c[1];if(d[4]==1) a[0]=reverse(a[0]); a[1]=c[2];if(d[9]==1) a[1]=reverse(a[1]); a[2]=c[0];if(d[2]==1) a[2]=reverse(a[2]);

a[3]=c[3];if(d[15]==1) a[3]=reverse(a[3]); break;

case 12: //1 3 2 0

a[0]=c[3];if(d[12]==1) a[0]=reverse(a[0]); a[1]=c[0];if(d[1]==1) a[1]=reverse(a[1]); a[2]=c[2];if(d[10]==1) a[2]=reverse(a[2]); a[3]=c[1];if(d[7]==1) a[3]=reverse(a[3]); break;

case 13: //1 3 0 2

a[0]=c[2];if(d[8]==1) a[0]=reverse(a[0]); a[1]=c[0];if(d[1]==1) a[1]=reverse(a[1]); a[2]=c[3];if(d[14]==1) a[2]=reverse(a[2]); a[3]=c[1];if(d[7]==1) a[3]=reverse(a[3]); break;

case 14: //1 2 3 0

a[0]=c[3];if(d[12]==1) a[0]=reverse(a[0]); a[1]=c[0];if(d[1]==1) a[1]=reverse(a[1]); a[2]=c[1];if(d[6]==1) a[2]=reverse(a[2]); a[3]=c[2];if(d[11]==1) a[3]=reverse(a[3]); break;

case 15: //1 2 0 3

a[0]=c[2];if(d[12]==1) a[0]=reverse(a[0]); a[1]=c[0];if(d[9]==1) a[1]=reverse(a[1]); a[2]=c[1];if(d[6]==1) a[2]=reverse(a[2]); a[3]=c[3];if(d[3]==1) a[3]=reverse(a[3]); break;

case 16: //1 0 3 2

a[0]=c[1];if(d[4]==1) a[0]=reverse(a[0]); a[1]=c[0];if(d[1]==1) a[1]=reverse(a[1]); a[2]=c[3];if(d[14]==1) a[2]=reverse(a[2]); a[3]=c[2];if(d[11]==1) a[3]=reverse(a[3]); break;

case 17: //1 0 2 3

a[0]=c[1];if(d[4]==1) a[0]=reverse(a[0]); a[1]=c[0];if(d[1]==1) a[1]=reverse(a[1]); a[2]=c[2];if(d[10]==1) a[2]=reverse(a[2]); a[3]=c[3];if(d[15]==1) a[3]=reverse(a[3]); break;

case 18: //0 3 2 1

a[0]=c[0];if(d[0]==1) a[0]=reverse(a[0]); a[1]=c[3];if(d[13]==1) a[1]=reverse(a[1]); a[2]=c[2];if(d[10]==1) a[2]=reverse(a[2]); a[3]=c[1];if(d[7]==1) a[3]=reverse(a[3]); break;

case 19: //0 3 1 2

a[0]=c[0];if(d[0]==1) a[0]=reverse(a[0]); a[1]=c[2];if(d[9]==1) a[1]=reverse(a[1]); a[2]=c[3];if(d[14]==1) a[2]=reverse(a[2]); a[3]=c[1];if(d[7]==1) a[3]=reverse(a[3]); break;

case 20: //0 2 3 1

a[0]=c[0];if(d[0]==1) a[0]=reverse(a[0]); a[1]=c[3];if(d[13]==1) a[1]=reverse(a[1]); a[2]=c[1];if(d[6]==1) a[2]=reverse(a[2]); a[3]=c[2];if(d[11]==1) a[3]=reverse(a[3]);

break;

case 21: //0 2 1 3

a[0]=c[0];if(d[0]==1) a[0]=reverse(a[0]); a[1]=c[2];if(d[9]==1) a[1]=reverse(a[1]); a[2]=c[1];if(d[6]==1) a[2]=reverse(a[2]); a[3]=c[3];if(d[15]==1) a[3]=reverse(a[3]); break;

case 22: //0 1 3 2

a[0]=c[0];if(d[0]==1) a[0]=reverse(a[0]); a[1]=c[1];if(d[5]==1) a[1]=reverse(a[1]); a[2]=c[3];if(d[14]==1) a[2]=reverse(a[2]); a[3]=c[2];if(d[11]==1) a[3]=reverse(a[3]); break;

case 23: //0 1 2 3

a[0]=c[0];if(d[0]==1) a[0]=reverse(a[0]); a[1]=c[1];if(d[5]==1) a[1]=reverse(a[1]); a[2]=c[2];if(d[10]==1) a[2]=reverse(a[2]); a[3]=c[3];if(d[15]==1) a[3]=reverse(a[3]); break; default: break; } }

//解密函数中使用的排列码表 void decode() {

switch(remainder) {

case 0: //3 2 0 1

if(d[8]==1) a[0]=reverse(a[0]);f[2]=a[0]; if(d[13]==1) a[1]=reverse(a[1]);f[3]=a[1]; if(d[6]==1) a[2]=reverse(a[2]);f[1]=a[2]; if(d[3]==1) a[3]=reverse(a[3]);f[0]=a[3]; break;

case 1: //3 2 1 0

if(d[12]==1) a[0]=reverse(a[0]);f[3]=a[0]; if(d[9]==1) a[1]=reverse(a[1]);f[2]=a[1]; if(d[6]==1) a[2]=reverse(a[2]);f[1]=a[2]; if(d[3]==1) a[3]=reverse(a[3]);f[0]=a[3]; break;

case 2: //3 1 2 0

if(d[12]==1) a[0]=reverse(a[0]);f[3]=a[0]; if(d[5]==1) a[1]=reverse(a[1]);f[1]=a[1]; if(d[10]==1) a[2]=reverse(a[2]);f[2]=a[2]; if(d[3]==1) a[3]=reverse(a[3]);f[0]=a[3]; break;

case 3: //3 1 0 2

if(d[8]==1) a[0]=reverse(a[0]);f[2]=a[0]; if(d[5]==1) a[1]=reverse(a[1]);f[1]=a[1]; if(d[14]==1) a[2]=reverse(a[2]);f[3]=a[2]; if(d[3]==1) a[3]=reverse(a[3]);f[0]=a[3]; break;

case 4: //3 0 2 1

if(d[4]==1) a[0]=reverse(a[0]);f[1]=a[0];


排列码n=4源程序文件(实现语言C++)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018年内蒙古继续教育97分答案

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

马上注册会员

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