10/09/22 06:25:10
ハッシュ関数作りました。評価してみてください。
void hash(int nn){
while(k<nn){
c1.cc[0]=((c1.cc[0]+u.cc[0])&f2)^c1.cc[1];
c1.cc[1]=((c1.cc[1]+u.cc[1])&f2)^c1.cc[2];
c1.cc[2]=((c1.cc[2]+u.cc[2])&f2)^c1.cc[3];
c1.cc[3]=((c1.cc[3]+u.cc[3])&f2)^c1.cc[0];
c2.cc[0]=((c2.cc[0]+u.cc[0])&f2)^c2.cc[1];
c2.cc[1]=((c2.cc[1]+u.cc[1])&f2)^c2.cc[2];
c2.cc[2]=((c2.cc[2]+u.cc[2])&f2)^c2.cc[3];
c2.cc[3]=((c2.cc[3]+u.cc[3])&f2)^c2.cc[0];
z=(c1.dd[0]&&ff)^((c1.dd[1]&ff)>>4);
c1.dd[0]=c1.dd[0]&f; c1.dd[1]=c1.dd[1]&f;
i=c1.cc[0]%64;
c1.dd[0]^=g[i][0]; c1.dd[1]^=g[i][1];
c1.dd[0]^= z; c1.dd[1]^= ~z;
i=c2.dd[0]%64;
zz=(c2.dd[0]&&ff)^((c2.dd[1]&ff)>>4);
c2.dd[0]=c2.dd[0]&f; c2.dd[1]=c2.dd[1]&f;
c2.dd[0]^=g[i][0]; c2.dd[1]^=g[i][1];
c1=s5(c1); c2=s5(c2);
c2.dd[0]^=zz; c2.dd[1]^=~zz;
printf("%04x %04x %04x %04x %04x %04x %04x %04x\n",c1.cc[0],c1.cc[1],c1.cc[2],c1.cc[3],c2.cc[0],c2.cc[1],c2.cc[2],c2.cc[3]);
k++;
}
}