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
| #include <stdio.h> #include <stdint.h> #include <string.h> #include <limits.h>
int main() { unsigned int a1[]= {0x1A800BDA, 0xF7A6219B, 0x491811D8, 0xF2013328, 0x156C365B, 0x3C6EAAD8, 0x84D4BF28, 0xF11A7EE7, 0x3313B252, 0xDD9FE279 }; int a2[]={2233,4455,6677,8899}; int v3,v5,v6; for (int i = 8; i >= 0; i-- ) { v5 = 0; v6 = 256256256 * i; v3 = i + 1; for(int j=0; j<=0x20; j++) { v6+=256256256; } do { ++v5; v6 -= 256256256; a1[v3] -= (v6 + a2[(v6 >> 11) & 3]) ^ (a1[i] + ((a1[i] >> 5) ^ (16 * a1[i]))); a1[i] -= v6 ^ (a1[v3] + ((a1[v3] >> 5) ^ (16 * a1[v3]))) ^ (v6 + a2[v6 & 3]); } while ( v5 <= 0x20 ); } for(int i=0;i<10;i++){ printf("%#x ",a1[i]); } return 0; }
|