//return0;
}
}
//取反函数
intreverse(intx)
{
x=~x;
x=x&1;
returnx;
}
charrhl(charcc)
{
unsignedchara,b;
a=cc<<7;
b=cc>>1;
cc=a|b;
returncc;
}
//加密函数中使用的排列码表
voidencode()
{
switch(remainder)
{
case0:
//3201
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;
case1:
//3210
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;
case2:
//3120
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;
case3:
//3102
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;
case5:
//3021
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;
case4:
//3012
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;
case6:
//2310
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;
case7:
//2301
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;
case8:
//2130
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;
case9:
//2103
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;
case10:
//2031
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;
case11:
//2013
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;
case12:
//1320
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;
case13:
//1302
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;
case14:
//1230
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;
case15:
//1203
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;
case16:
//1032
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;
case17:
//1023
a[0]=c[1];if(d[4]==1)a[0]=reverse(a[0]);
a[1]=c[