Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #define F1(a,b,c,d,e,f,g,h,j,x) \
- a = (((((b + x) ^ (c - x)) >> 2) ^ (((d & f) << (j % 3)) + 1)) ^ (((d & f) << 3) ^ (e ^ g ^ f)) ^ x) - 1
- char *xhash(char *data, unsigned long length) {
- unsigned int A, B, C, D, E, F, G, H;
- unsigned long i;
- unsigned short j;
- char *str;
- A = 0xCBF60005;
- B = 0x3C88601F;
- C = 0xDBD23C63;
- D = 0x71057BBD;
- E = 0x19E7C50B;
- F = 0xF8799589;
- G = 0x2A2ACB4F;
- H = 0xE35723E8;
- for(i = 0; i < length; i++) {
- for(j = 0; j < 8; j++) {
- F1(A, B, C, D, E, F, G, H, j, data[i]);
- F1(B, C, D, E, F, G, H, A, j, data[i]);
- F1(C, D, E, F, G, H, A, B, j, data[i]);
- F1(D, E, F, G, H, A, B, C, j, data[i]);
- F1(E, F, G, H, A, B, C, D, j, data[i]);
- F1(F, G, H, A, B, C, D, E, j, data[i]);
- F1(G, H, A, B, C, D, E, F, j, data[i]);
- F1(H, A, B, C, D, E, F, G, j, data[i]);
- }
- }
- asprintf(&str, "%.8X %.8X %.8X %.8X %.8X %.8X %.8X %.8X", A, B, C, D, E, F, G, H);
- return str;
- }
- int main(int argc, char **argv) {
- if(argc < 2)
- return 1;
- printf("%s : %s\n", xhash(argv[1], strlen(argv[1])), argv[1]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement