}
}
-
+inline uchar circ(uchar x,int n) {return (x << n) | (x >> (8 - n));}
//the proposed hash function, which is based on DSD structure. Sensitivity is ensured by employing the binary diffusion
for(int a=0;a<h;a+=4) {
Y[a]=Sbox1[Y[a]];
+ Y[a+1]=Sbox1[Y[a+1]];
+ Y[a+2]=Sbox1[Y[a+2]];
+ Y[a+3]=Sbox1[Y[a+3]];
}
+
+
+
+
Z[h-1]=Y[h-1]^Y[0];
for(int a=h-1;a>0;a--) {
Z[a-1]=Z[a]^Y[a];
}
- for(int a=0;a<h;a+=4) {
+ /* for(int a=0;a<h;a+=4) {
Z[a]=Sbox2[Z[a]];
- }
+ Z[a+1]=Sbox2[Z[a+1]];
+ Z[a+2]=Sbox2[Z[a+2]];
+ Z[a+3]=Sbox2[Z[a+3]];
+
+ }*/
for(int a=0;a<h;a+=4) {
- /* RM1[a]=Z[a];
+ RM1[a]=Z[a];
RM1[a+1]=Z[a+1];
RM1[a+2]=Z[a+2];
RM1[a+3]=Z[a+3];
- */
-
+
+/*
RM1[a]=Z[a]^RM1[PboxRM[a]];
RM1[a+1]=Z[a+1]^RM1[PboxRM[a+1]];
RM1[a+2]=Z[a+2]^RM1[PboxRM[a+2]];
RM1[a+3]=Z[a+3]^RM1[PboxRM[a+3]];
-
+*/
}
}