template<int h2>
-void decrypt(uchar* seq_in, uchar *seq_out, int len,uchar* RM1,int *Pbox, int *PboxRM, uchar *Sbox1, uchar *Sbox2, int debug) {
+void decrypt(uchar* seq_in, uchar *seq_out, int len,uchar* RM1,int *Pbox, int *PboxRM, uchar *Inv_Sbox1, uchar *Inv_Sbox2, int debug) {
/*uchar *fX=new uchar[h2];
uchar *Inv_Sbox2=new uchar[256];
*/
uchar fX[h2];
- uchar Inv_Sbox1[256];
- uchar Inv_Sbox2[256];
-
-
-
- inverse_tables(Sbox1,256,Inv_Sbox1);
-
-
- inverse_tables(Sbox2,256,Inv_Sbox2);
-
uchar Sbox2[256];
rc4key(&DK[16], Sbox2, 16);
+ uchar Inv_Sbox1[256];
+ uchar Inv_Sbox2[256];
+ inverse_tables(Sbox1,256,Inv_Sbox1);
+ inverse_tables(Sbox2,256,Inv_Sbox2);
+
if(ctr)
encrypt_ctr<4*4>(seq2, seq,len,RM2,Pbox,PboxRM,Sbox1,Sbox2,0);
else
- decrypt<4*4>(seq2,seq,len,RM2,Pbox,PboxRM,Sbox1,Sbox2,0);
+ decrypt<4*4>(seq2,seq,len,RM2,Pbox,PboxRM,Inv_Sbox1,Inv_Sbox2,0);
}
break;
case 8:
if(ctr)
encrypt_ctr<8*8>(seq2, seq,len,RM2,Pbox,PboxRM,Sbox1,Sbox2,0);
else
- decrypt<8*8>(seq2,seq,len,RM2,Pbox,PboxRM,Sbox1,Sbox2,0);
+ decrypt<8*8>(seq2,seq,len,RM2,Pbox,PboxRM,Inv_Sbox1,Inv_Sbox2,0);
}
break;
case 16:
if(ctr)
encrypt_ctr<16*16>(seq2, seq,len,RM2,Pbox,PboxRM,Sbox1,Sbox2,0);
else
- decrypt<16*16>(seq2,seq,len,RM2,Pbox,PboxRM,Sbox1,Sbox2,0);
+ decrypt<16*16>(seq2,seq,len,RM2,Pbox,PboxRM,Inv_Sbox1,Inv_Sbox2,0);
}
break;
case 32:
if(ctr)
encrypt_ctr<32*32>(seq2, seq,len,RM2,Pbox,PboxRM,Sbox1,Sbox2,0);
else
- decrypt<32*32>(seq2,seq,len,RM2,Pbox,PboxRM,Sbox1,Sbox2,0);
+ decrypt<32*32>(seq2,seq,len,RM2,Pbox,PboxRM,Inv_Sbox1,Inv_Sbox2,0);
}
break;
case 64:
if(ctr)
encrypt_ctr<64*64>(seq2, seq,len,RM2,Pbox,PboxRM,Sbox1,Sbox2,0);
else
- decrypt<64*64>(seq2,seq,len,RM2,Pbox,PboxRM,Sbox1,Sbox2,0);
+ decrypt<64*64>(seq2,seq,len,RM2,Pbox,PboxRM,Inv_Sbox1,Inv_Sbox2,0);
}
break;
}