+void encrypt_ctr(uchar* seq_in, uchar *seq_out, int len,uchar* RM1,int *Pbox, int *PboxRM, uchar *Sbox1, uchar *Sbox2, int enc) {
+
+
+ uchar *X=new uchar[h2];
+ uchar *fX=new uchar[h2];
+ int ind1,ind2;
+
+
+ for(int a=0;a<h2;a++) {
+ X[a]=Sbox1[a];
+ }
+
+
+ for(int it=0;it<len;it++) {
+ if(enc) {
+ ind1=it*h2;
+ ind2=Pbox[it]*h2;
+ }
+ else {
+ ind2=it*h2;
+ ind1=Pbox[it]*h2;
+ }
+
+
+
+ for(int a=0;a<h2;a++){
+ fX[a]=Sbox1[RM1[X[a]]];
+ }
+
+
+ for(int a=0;a<h2;a++) {
+ fX[a]=fX[a]^RM1[a];
+ }
+
+
+ for(int a=0;a<h2;a++) {
+ fX[a]=Sbox2[fX[a]];
+ }
+
+
+ for(int a=0;a<h2;a++) {
+ seq_out[ind1+a]=fX[a]^seq_in[ind2+a];
+ }
+
+ for(int a=0;a<h2;a++) {
+ RM1[a]=RM1[PboxRM[a]];
+ }
+
+
+
+ }
+
+
+}
+