}
}
-
+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
X[a+3]=RM1[a+3]^seq_in[ind2+a+3];
}
-/* Y[0]=Sbox1[X[0]^X[h-1]];
- for(int a=1;a<h;a++) {
- Y[a]=Sbox1[Y[a-1]^X[a-1]];
- }
- Z[h-1]=Sbox2[Y[h-1]^Y[0]];
- for(int a=h-1;a>0;a--) {
- Z[a-1]=Sbox2[Z[a]^Y[a]];
- }
-*/
Y[0]=X[0]^X[h-1];
for(int a=1;a<h;a++) {
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) {
- Z[a]=Sbox2[Z[a]];
- }
-
-
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]];
+
}
}
time+=TimeStop(t);
cout<<"Hash Time "<<time<<endl;
-
+ cout<<(double)imsize*nb_test/time<<"\t";
for(int i=0;i<h;i++){
cout<<(int)RM1[i]<<" ";