]> 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
[Cipher_code.git] / OneRoundIoT / OneRound / one_round_par2.cpp
index f579622a7b468c481b1a71fd14f1149f9b2cf353..057887ca548d29f81b7984cd18765b71e5e46a21 100644 (file)
@@ -167,7 +167,7 @@ void encrypt_ctr(uchar* seq_in, uchar *seq_out, int len,uchar* RM1,int *Pbox, in
     uchar X[h2];
 
     for(int a=0;a<h2;a++) {
     uchar X[h2];
 
     for(int a=0;a<h2;a++) {
-      X[a]=Sbox1[a&0xFF];           //Warning according to the size of h2, we can be outsize of Sbox1[a]
+      X[a]=Sbox1[(a+10*id)&0xFF];           //Warning according to the size of h2, we can be outsize of Sbox1[a]
     }
 
 
     }
 
 
@@ -191,12 +191,12 @@ 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) {
+       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];
 
       for(int a=0;a<h2;a+=4){
        fX[a]=X[a];
@@ -207,33 +207,10 @@ void encrypt_ctr(uchar* seq_in, uchar *seq_out, int len,uchar* RM1,int *Pbox, in
 
 
 
 
 
 
+      
+     
     
     
-      /*   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) {
-       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]];
     
       for(int a=0;a<h2;a+=4) {
        fX[a]=Sbox2[fX[a]];
@@ -605,12 +582,6 @@ int main(int argc, char** argv) {
   int num=omp_get_max_threads();
   cout<<"num "<<num<<endl;
   
   int num=omp_get_max_threads();
   cout<<"num "<<num<<endl;
   
-  uchar RM1[num*(h * h)];
-  uchar RM2[num*(h * h)];
-  prga(sc, num*(h * h), RM1);
-  for(int i=0;i<num*h2;i++) {
-    RM2[i]=RM1[i];
-  }
   
 
 
   
 
 
@@ -618,10 +589,30 @@ int main(int argc, char** argv) {
   
     
   
   
     
   
-  uchar keyp[16];
-  for (int i = 48; i < 64; i++)
-    keyp[i-48] = DK[i];
 
 
+
+  uchar RM1[num*(h * h)];
+  uchar RM2[num*(h * h)];
+  /*for(int i=0;i<num;i++) {
+    
+    rc4key(&DK[48+i*16], sc, 16);
+    prga(sc, h2, &RM1[h2*i]);
+    for(int a=0;a<h2;a++) {
+      cout<<(int)RM1[h2*i+a]<<" ";
+    }
+    cout<<endl<<endl;
+  }*/
+
+  rc4key(&DK[48], sc, 16);
+  prga(sc, h2*num, RM1);
+
+  rc4key(&DK[64], sc, 16);
+  prga(sc, h2, RM2);
+
+
+
+
+  
 //  cout<<len<<endl;
   int *Pbox=new int[len];
 
 //  cout<<len<<endl;
   int *Pbox=new int[len];
 
@@ -629,15 +620,14 @@ int main(int argc, char** argv) {
   
   int *PboxRM=new int[h2];
 
   
   int *PboxRM=new int[h2];
 
-  rc4keyperm(keyp, len, rp, Pbox, 16);
+  rc4keyperm(&DK[48+16*num], len, rp, Pbox, 16);
 
 
-//  printf("len %d\n",len);
-  for(int i=0;i<len;i++) {
-//    printf("%d \n",Pbox[i]);
-  }
-  
 
 
+  rc4keyperm(RM2, h2, rp, PboxRM, h2);
 
 
+  for(int i=0;i<num*h2;i++) {
+    RM2[i]=RM1[i];
+  }
  
   double time=0;
   double t=TimeStart();
  
   double time=0;
   double t=TimeStart();