1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| #include <stdio.h>
#include <stdlib.h>
#define rotl(x,y) ((x>>y)|(x<<(8-y)))
#define rotr(x,y) ((x<<y)|(x>>(8-y)))
int main(int argc, char * argv[])
{
unsigned char variable[100],hash[2];
int x,y,len;
memset(hash,0,2);
sprintf(variable,"tess");
len = strlen(variable);
for(x=0;x<8;x++)
{
for(y=0;y<len-2;y++)
hash[0]=(rotl(variable[y],x)^0x55)^(rotr(variable[y+1],x)^hash[1]);
for(y=len-1;y>0;y--)
hash[1]+=((rotl(variable[y],x)^0x55)^rotr(variable[y-1],x))^hash[0];
}
printf("tess -> hash[0] = 0x%02X - hash[1] = 0x%02X\n",hash[0],hash[1]);
memset(hash,0,2);
sprintf(variable,"test");
len = strlen(variable);
for(x=0;x<8;x++)
{
for(y=0;y<len-2;y++)
hash[0]=(rotl(variable[y],x)^0x55)^(rotr(variable[y+1],x)^hash[0]);
for(y=len-1;y>0;y--)
hash[1]+=((rotl(variable[y],x)^0x55)^rotr(variable[y-1],x))^hash[0];
}
printf("test -> hash[0] = 0x%02X - hash[1] = 0x%02X\n",hash[0],hash[1]);
return(0);
} |
Partager