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

Private GIT Repository
new
[Cipher_code.git] / OneRoundIoT / EnhancedOneRound / enhanced_oneround.cpp
index 22a7a90fbb3270021aaaf0827a7cfb935873748a..31f71d01b4a7689bdfa4bb9edd72b0366d61a275 100644 (file)
@@ -73,18 +73,22 @@ uint xorshift32(const uint t)
   return x;
 }
 
-ulong xorshift64(ulong t)
+
+ulong xorseed;
+
+ulong xorshift64()
 {
         /* Algorithm "xor" from p. 4 of Marsaglia, "Xorshift RNGs" */
-        ulong x = t;
+        ulong x = xorseed;
         x ^= x >> 12; // a
         x ^= x << 25; // b
         x ^= x >> 27; // c
 
 
-        return x;
+        return xorseed=x;
 }
 
+/*
 __uint128_t g_lehmer64_state;
 
 inline uint64_t splitmix64_stateless(uint64_t index) {
@@ -106,7 +110,7 @@ inline uint64_t lehmer64() {
   return g_lehmer64_state >> 64;
 }
 
-
+*/
 
 
 
@@ -205,9 +209,9 @@ void encrypt_ecb_prng(uchar* seq_in, uchar *seq_out, int len,uchar* RM, int *Pbo
 
     
     for(int a=0;a<(h>>3);a++) {
-      myrand=lehmer64();
+      myrand=xorshift64();
       rm1[a]=myrand;
-      myrand=lehmer64();
+      myrand=xorshift64();
       rm2[a]=myrand;
     }  
 
@@ -331,9 +335,9 @@ void decrypt_ecb_prng(uchar* seq_in, uchar *seq_out, int len, uchar* RM, int *Pb
 
 
     for(int a=0;a<(h>>3);a++) {
-      myrand=lehmer64();
+      myrand=xorshift64();
       rm1[a]=myrand;
-      myrand=lehmer64();
+      myrand=xorshift64();
       rm2[a]=myrand;
     }
 
@@ -457,9 +461,9 @@ void encrypt_ecb_rm(uchar* seq_in, uchar *seq_out, int len,uchar* RM, int *Pbox,
 
     
     for(int a=0;a<(h>>3);a++) {
-      myrand=lehmer64();
+      myrand=xorshift64();
       rm1[a]=myrand;
-      myrand=lehmer64();
+      myrand=xorshift64();
       rm2[a]=myrand;
     }  
 
@@ -583,9 +587,9 @@ void decrypt_ecb_rm(uchar* seq_in, uchar *seq_out, int len, uchar* RM, int *Pbox
 
 
     for(int a=0;a<(h>>3);a++) {
-      myrand=lehmer64();
+      myrand=xorshift64();
       rm1[a]=myrand;
-      myrand=lehmer64();
+      myrand=xorshift64();
       rm2[a]=myrand;
     }
 
@@ -858,11 +862,14 @@ void encrypt_cbc_prng(uchar* seq_in, uchar *seq_out, int len,uchar* RM, int *Pbo
   uchar gY[h];
   uchar IV1[h];
   uchar IV2[h];
-  uchar RM1[h];
-  uchar RM2[h];
+  uchar *RM1=&RM[0];
+  uchar *RM2=&RM[h];
   uchar tmp[h];
   ulong *rm1=(ulong*)RM1;
   ulong *rm2=(ulong*)RM2;
+
+
+
   
   for(int it=0;it<len/2;it++) {
     int ind1=Pbox[it]*h;
@@ -870,9 +877,9 @@ void encrypt_cbc_prng(uchar* seq_in, uchar *seq_out, int len,uchar* RM, int *Pbo
 
     
     for(int a=0;a<(h>>3);a++) {
-      myrand=lehmer64();
+      myrand=xorshift64();
       rm1[a]=myrand;
-      myrand=lehmer64();
+      myrand=xorshift64();
       rm2[a]=myrand;
     }  
 
@@ -1027,8 +1034,10 @@ void decrypt_cbc_prng(uchar* seq_in, uchar *seq_out, int len, uchar* RM, int *Pb
   uchar gY[h];
   uchar IV1[h];
   uchar IV2[h];
-  uchar RM1[h];
-  uchar RM2[h];
+  uchar *RM1=&RM[0];
+  uchar *RM2=&RM[h];
+//  uchar RM1[h];
+//  uchar RM2[h];
   uchar tmp[h];
   ulong *rm1=(ulong*)RM1;
   ulong *rm2=(ulong*)RM2;
@@ -1039,9 +1048,9 @@ void decrypt_cbc_prng(uchar* seq_in, uchar *seq_out, int len, uchar* RM, int *Pb
 
     
     for(int a=0;a<(h>>3);a++) {
-      myrand=lehmer64();
+      myrand=xorshift64();
       rm1[a]=myrand;
-      myrand=lehmer64();
+      myrand=xorshift64();
       rm2[a]=myrand;
     }  
     
@@ -1958,8 +1967,8 @@ int main(int argc, char** argv) {
   inverse_tables(Sbox2,256,Inv_Sbox2);
 
 
-
-  lehmer64_seed(myrand);
+  xorseed=myrand;
+//  lehmer64_seed(myrand);
   time_encrypt=0;
   t=TimeStart();
 
@@ -2074,8 +2083,9 @@ int main(int argc, char** argv) {
     store_RGB_pixmap("lena2.ppm", data_R, data_G, data_B, width, height);
   }
 
-  
-  lehmer64_seed(myrand);
+
+  xorseed=myrand;
+  // lehmer64_seed(myrand);
   time_decrypt=0;
   t=TimeStart();
   switch(h) {