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

Private GIT Repository
up
[Cipher_code.git] / OneRoundIoT / OneRound / rc4_hash3.cpp
index de5b40c36bd339fe3bfbfbb8ab400378396a9b20..3cb1e077edbe5cba2e1209887e0cea7a83132687 100644 (file)
@@ -163,34 +163,18 @@ inline static  uint64_t splitmix64(uint64_t index) {
 
 //the proposed hash function, which is based on DSD structure. Sensitivity is ensured by employing the binary diffusion
 
-void hash_DSD_BIN(uchar* seq_in, uchar* RM1,int len, uchar *S, int h) {
+void hash_DSD_BIN(uint64_t * ss, uint64_t* rm,int len,int h) {
 
 
-  // Goal: Calculate the hash value
-  // Output: RM (hash value)
-  //uchar X[h];
-  //uint64_t rm2[h>>8];
   int ind1=0;
-
-
-  uint64_t *rm=(uint64_t*)RM1;
-  //  uint64_t *xx=(uint64_t*)X;
-  uint64_t *ss=(uint64_t*)seq_in;
-
-
-  int a=0;
   
   for(int it=0;it<len;it++) {
-    // Mix with dynamic RM
-    rm[0]=rm[0]^ss[ind1];
+    rm[0]=rm[h-1]^ss[ind1];
     rm[0]=xorshift64(rm[0] );
-    for(a=1;a<h;a++) {
-      rm[a]=rm[a]^ss[ind1+a];
-      rm[a]=xorshift64(rm[a] ^ rm[a-1]);
+    for(int a=1;a<h;a++) {
+      rm[a]=rm[a-1]^ss[ind1+a];
+      rm[a]=xorshift64(rm[a]);
     }
-    //    printf("argh %d\n",a);
-    rm[0]=xorshift64(rm[a-1]);
-
 
     ind1+=h;
   }
@@ -369,10 +353,15 @@ int main(int argc, char** argv) {
 
   
   time=0;
+  uint64_t *rm=(uint64_t*)RM1;
+  uint64_t *ss=(uint64_t*)seq;
+
+
+
   t=TimeStart();
   for(int i=0;i<nb_test;i++)
   {
-    hash_DSD_BIN(seq, RM1,len,Sbox1,h>>3);
+    hash_DSD_BIN(ss, rm,len,h>>3);
   }