c[26]=key[43]; c[27]=key[35]; d[0]=key[62]; d[1]=key[54]; d[2]=key[46]; d[3]=key[38]; d[4]=key[30]; d[5]=key[22]; d[6]=key[14]; d[7]=key[6]; d[8]=key[61]; d[9]=key[53]; d[10]=key[45]; d[11]=key[37]; d[12]=key[29]; d[13]=key[21]; d[14]=key[13]; d[15]=key[5]; d[16]=key[60]; d[17]=key[52]; d[18]=key[44]; d[19]=key[36]; d[20]=key[28]; d[21]=key[20]; d[22]=key[12]; d[23]=key[4]; d[24]=key[27]; d[25]=key[19]; d[26]=key[11];
d[27]=key[3]; }
void move(int a[])//循环左移1格 {
int i,temp; temp=a[0]; for(i=0;i<27;i++) {
a[i]=a[i+1]; }
a[i]=temp; }
void move1(int a[])//循环左移2格 {
int i,temp,temp1; temp=a[0]; temp1=a[1]; for(i=0;i<26;i++) {
a[i]=a[i+2]; }
a[i]=temp; a[i+1]=temp1; }
void swap1(int k[],int c[],int d[])//置换选择2 {
k[0]=c[13]; k[1]=c[16]; k[2]=c[10];
k[3]=c[23]; k[4]=c[0]; k[5]=c[4]; k[6]=c[2]; k[7]=c[27]; k[8]=c[14]; k[9]=c[5]; k[10]=c[20]; k[11]=c[9]; k[12]=c[22]; k[13]=c[18]; k[14]=c[11]; k[15]=c[3]; k[16]=c[25]; k[17]=c[7]; k[18]=c[15]; k[19]=c[6]; k[20]=c[26]; k[21]=c[19]; k[22]=c[12]; k[23]=c[1]; k[24]=d[12]; k[25]=d[23]; k[26]=d[2]; k[27]=d[8]; k[28]=d[18]; k[29]=d[26]; k[30]=d[1]; k[31]=d[11];
k[32]=d[22]; k[33]=d[16]; k[34]=d[4]; k[35]=d[19]; k[36]=d[15]; k[37]=d[20]; k[38]=d[10]; k[39]=d[27]; k[40]=d[5]; k[41]=d[24]; k[42]=d[17]; k[43]=d[13]; k[44]=d[21]; k[45]=d[7]; k[46]=d[0]; k[47]=d[3]; }
void yihuo32(int a[],int k[])//对两个数据进行异或运算 { int i;
for(i=0;i<32;i++) {
if(a[i]==k[i]) { a[i]=0; } else { a[i]=1;
} } }
void yihuo48(int a[],int k[])//对两个数据进行异或运算 { int i;
for(i=0;i<48;i++) {
if(a[i]==k[i]) { a[i]=0; } else { a[i]=1; } } }
void p_swap(int result[])//置换运算p { int i; int temp[32]; for(i=0;i<32;i++) {
temp[i]=result[i]; }
result[0]=temp[15]; result[1]=temp[6]; result[2]=temp[19];