Advertisement
Guest User

New hash algorithm by Diel

a guest
Aug 9th, 2014
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.17 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define F1(a,b,c,d,e,f,g,h,j,x) \
  5. a = (((((b + x) ^ (c - x)) >> 2) ^ (((d & f) << (j % 3)) + 1)) ^ (((d & f) << 3) ^ (e ^ g ^ f)) ^ x) - 1
  6.  
  7. char *xhash(char *data, unsigned long length) {
  8.   unsigned int A, B, C, D, E, F, G, H;
  9.   unsigned long i;
  10.   unsigned short j;
  11.   char *str;
  12.  
  13.   A = 0xCBF60005;
  14.   B = 0x3C88601F;
  15.   C = 0xDBD23C63;
  16.   D = 0x71057BBD;
  17.   E = 0x19E7C50B;
  18.   F = 0xF8799589;
  19.   G = 0x2A2ACB4F;
  20.   H = 0xE35723E8;
  21.  
  22.   for(i = 0; i < length; i++) {
  23.     for(j = 0; j < 8; j++) {
  24.       F1(A, B, C, D, E, F, G, H, j, data[i]);
  25.       F1(B, C, D, E, F, G, H, A, j, data[i]);
  26.       F1(C, D, E, F, G, H, A, B, j, data[i]);
  27.       F1(D, E, F, G, H, A, B, C, j, data[i]);
  28.       F1(E, F, G, H, A, B, C, D, j, data[i]);
  29.       F1(F, G, H, A, B, C, D, E, j, data[i]);
  30.       F1(G, H, A, B, C, D, E, F, j, data[i]);
  31.       F1(H, A, B, C, D, E, F, G, j, data[i]);
  32.     }
  33.   }
  34.  
  35.   asprintf(&str, "%.8X %.8X %.8X %.8X %.8X %.8X %.8X %.8X", A, B, C, D, E, F, G, H);
  36.  
  37.   return str;
  38. }
  39.  
  40. int main(int argc, char **argv) {
  41.   if(argc < 2)
  42.     return 1;
  43.  
  44.   printf("%s : %s\n", xhash(argv[1], strlen(argv[1])), argv[1]);
  45.  
  46.   return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement