]> AND Private Git Repository - Cipher_code.git/blobdiff - OneRoundIoT/OneRound/one_round_par2.cpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
new version of improved one round
[Cipher_code.git] / OneRoundIoT / OneRound / one_round_par2.cpp
index efa6969574924a476d2b0b541de95eae6bbd34bd..4a069b4653a8766b76f8fe8804d3814866f33c38 100644 (file)
@@ -166,10 +166,13 @@ void encrypt_ctr(uchar* seq_in, uchar *seq_out, int len,uchar* RM1,int *Pbox, in
 
     uchar X[h2];
 
 
     uchar X[h2];
 
-    for(int a=0;a<h2;a++) {
-      X[a]=Sbox1[(a+10*id)&0xFF];           //Warning according to the size of h2, we can be outsize of Sbox1[a]
-    }
 
 
+    for(int a=0;a<h2;a+=4) {
+     X[a]=Sbox1[a&0xFF];           //Warning according to the size of h2, we can be outsize of Sbox1[a]
+     X[a+1]=Sbox1[(a+1)&0xFF];
+     X[a+2]=Sbox1[(a+2)&0xFF];
+     X[a+3]=Sbox1[(a+3)&0xFF];           
+   }
 
     
     int offset=p*loc_len;
 
     
     int offset=p*loc_len;
@@ -191,72 +194,36 @@ void encrypt_ctr(uchar* seq_in, uchar *seq_out, int len,uchar* RM1,int *Pbox, in
       }
   
 
       }
   
 
-      /*for(int a=0;a<h2;a+=4){
-       fX[a]=RM1[X[a]];
-       fX[a+1]=RM1[X[a+1]];
-       fX[a+2]=RM1[X[a+2]];
-       fX[a+3]=RM1[X[a+3]];
-       }*/
-
-      for(int a=0;a<h2;a+=4){
-       fX[a]=X[a];
-       fX[a+1]=X[a+1];
-       fX[a+2]=X[a+2];
-       fX[a+3]=X[a+3];
+      for(int a=0;a<h2;a+=4) {
+       X[a]=X[Sbox1[a]];
+       X[a+1]=X[Sbox1[a+1]];
+       X[a+2]=X[Sbox1[a+2]];
+       X[a+3]=X[Sbox1[a+3]];
       }
 
       }
 
-
-
+     
+      
+      for(int a=0;a<h2;a+=4) {
+       fX[a]=X[a]^RM2[a];
+       fX[a+1]=X[a+1]^RM2[a+1];
+       fX[a+2]=X[a+2]^RM2[a+2];
+       fX[a+3]=X[a+3]^RM2[a+3];
+      }
     
     
-      /*   if(it<513) {
-          for(int a=0;a<h2;a++)
-          printf("%d ",fX[a]);
-          printf("\n");
-          }*/
     
     
-      *(int*)&fX[0]^=it;
-
-      /* if(it<513) {
-        for(int a=0;a<h2;a++)
-        printf("%d ",fX[a]);
-        printf("\n");
-        }*/
-
-
-  
     
       /*for(int a=0;a<h2;a+=4) {
     
       /*for(int a=0;a<h2;a+=4) {
-       fX[id*h2+a]=fX[id*h2+a]^RM1[id*h2+a];
-       fX[id*h2+a+1]=fX[id*h2+a+1]^RM1[id*h2+a+1];
-       fX[id*h2+a+2]=fX[id*h2+a+2]^RM1[id*h2+a+2];
-       fX[id*h2+a+3]=fX[id*h2+a+3]^RM1[id*h2+a+3];
-       }*/
-
-
-
-    
-      for(int a=0;a<h2;a+=4) {
        fX[a]=Sbox2[fX[a]];
        fX[a+1]=Sbox2[fX[a+1]];
        fX[a+2]=Sbox2[fX[a+2]];
        fX[a+3]=Sbox2[fX[a+3]];
        fX[a]=Sbox2[fX[a]];
        fX[a+1]=Sbox2[fX[a+1]];
        fX[a+2]=Sbox2[fX[a+2]];
        fX[a+3]=Sbox2[fX[a+3]];
-      }
+       }*/
 
 //    rotate(RM1, &RM2[id*h2], h2, Pbox[it]%h2);
     
 
 //    rotate(RM1, &RM2[id*h2], h2, Pbox[it]%h2);
     
-      for(int a=0;a<h2;a+=4) {
-       RM2[a]=RM2[PboxRM[a]];
-       RM2[a+1]=RM2[PboxRM[a+1]];
-       RM2[a+2]=RM2[PboxRM[a+2]];
-       RM2[a+3]=RM2[PboxRM[a+3]];
-      }
     
     
-      for(int a=0;a<h2;a+=4) {
-       fX[a]=fX[a]^RM2[a];
-       fX[a+1]=fX[a+1]^RM2[a+1];
-       fX[a+2]=fX[a+2]^RM2[a+2];
-       fX[a+3]=fX[a+3]^RM2[a+3];
-      }
+    
+     
 
 
     
 
 
     
@@ -274,7 +241,17 @@ void encrypt_ctr(uchar* seq_in, uchar *seq_out, int len,uchar* RM1,int *Pbox, in
        seq_out[ind1+a+2]=fX[a+2];
        seq_out[ind1+a+3]=fX[a+3];
       }
        seq_out[ind1+a+2]=fX[a+2];
        seq_out[ind1+a+3]=fX[a+3];
       }
-    
+
+
+
+      for(int a=0;a<h2;a+=4) {
+       RM2[a]=RM2[PboxRM[a]];
+       RM2[a+1]=RM2[PboxRM[a+1]];
+       RM2[a+2]=RM2[PboxRM[a+2]];
+       RM2[a+3]=RM2[PboxRM[a+3]];
+      }
+
+      
       /*for(int a=0;a<h2;a+=4) {
        RM1[id*h2+a]=RM1[id*h2+PboxRM[a]];
        RM1[id*h2+a+1]=RM1[id*h2+PboxRM[a+1]];
       /*for(int a=0;a<h2;a+=4) {
        RM1[id*h2+a]=RM1[id*h2+PboxRM[a]];
        RM1[id*h2+a+1]=RM1[id*h2+PboxRM[a+1]];