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

Private GIT Repository
new
[Cipher_code.git] / OneRoundIoT / OneRound / rc4_hash3.cpp
index 07269d03e5dcb2c2758ebd88f1c0fd75e7eba71f..243fc1ec032f4ffd072d63c17a583756ea9d5eff 100644 (file)
@@ -138,7 +138,7 @@ void prga(uchar *sc, uchar *X, int ldata, uchar *r, int h) {
 inline uchar  circ(uchar x,int n) {return (x << n) | (x >> (8 - n));}
 
 
 inline uchar  circ(uchar x,int n) {return (x << n) | (x >> (8 - n));}
 
 
-uint64_t xorshift64( const uint64_t state)
+inline static uint64_t xorshift64( const uint64_t state)
 {
   uint64_t x = state;
   x^= x << 13;
 {
   uint64_t x = state;
   x^= x << 13;
@@ -148,7 +148,7 @@ uint64_t xorshift64( const uint64_t state)
 }
 
 
 }
 
 
-static inline uint64_t splitmix64(uint64_t index) {
+inline static  uint64_t splitmix64(uint64_t index) {
   uint64_t z = (index + UINT64_C(0x9E3779B97F4A7C15));
   z = (z ^ (z >> 30)) * UINT64_C(0xBF58476D1CE4E5B9);
   z = (z ^ (z >> 27)) * UINT64_C(0x94D049BB133111EB);
   uint64_t z = (index + UINT64_C(0x9E3779B97F4A7C15));
   z = (z ^ (z >> 30)) * UINT64_C(0xBF58476D1CE4E5B9);
   z = (z ^ (z >> 27)) * UINT64_C(0x94D049BB133111EB);
@@ -168,8 +168,9 @@ void hash_DSD_BIN(uchar* seq_in, uchar* RM1,int len, uchar *S, int h) {
 
   // Goal: Calculate the hash value
   // Output: RM (hash value)
 
   // Goal: Calculate the hash value
   // Output: RM (hash value)
-  uchar X[h];
-  int ind1,ind2;
+  //uchar X[h];
+  //uint64_t rm2[h>>8];
+  int ind1=0;
 
 
   uint64_t *rm=(uint64_t*)RM1;
 
 
   uint64_t *rm=(uint64_t*)RM1;
@@ -177,17 +178,21 @@ void hash_DSD_BIN(uchar* seq_in, uchar* RM1,int len, uchar *S, int h) {
   uint64_t *ss=(uint64_t*)seq_in;
 
 
   uint64_t *ss=(uint64_t*)seq_in;
 
 
-  int a;
+  int a=0;
+  
   for(int it=0;it<len;it++) {
   for(int it=0;it<len;it++) {
-    ind1=(it*h)>>3;
     // Mix with dynamic RM
     // Mix with dynamic RM
-    rm[0]=rm[0]^ss[ind1];
+    rm[0]=rm[h-1]^ss[ind1];
     rm[0]=xorshift64(rm[0] );
     rm[0]=xorshift64(rm[0] );
-    for(a=1;a<(h>>3);a++) {
-      rm[a]=rm[a]^ss[ind1+a];
-      rm[a]=xorshift64(rm[a] ^ rm[a-1]);
+    for(a=1;a<h;a++) {
+      rm[a]=rm[a-1]^ss[ind1+a];
+      rm[a]=xorshift64(rm[a]);
     }
     }
-    rm[0]=xorshift64(rm[a] ^ rm[0] );
+    //    printf("argh %d\n",a);
+    //rm[0]=xorshift64(rm[a-1]);
+
+
+    ind1+=h;
   }
 
  
   }
 
  
@@ -286,12 +291,12 @@ int main(int argc, char** argv) {
   if(change==1) {
     
     seq[4]++;
   if(change==1) {
     
     seq[4]++;
-    seq[5]--;
+    //    seq[5]--;
   }
   if(change==2) {
     
     seq[9]++;
   }
   if(change==2) {
     
     seq[9]++;
-    seq[10]--;
+    //   seq[10]--;
   }
 
   printf("seq 4 %d\n",seq[4]);
   }
 
   printf("seq 4 %d\n",seq[4]);
@@ -367,7 +372,7 @@ int main(int argc, char** argv) {
   t=TimeStart();
   for(int i=0;i<nb_test;i++)
   {
   t=TimeStart();
   for(int i=0;i<nb_test;i++)
   {
-    hash_DSD_BIN(seq, RM1,len,Sbox1,h);
+    hash_DSD_BIN(seq, RM1,len,Sbox1,h>>3);
   }
 
 
   }