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
   | #include <stdio.h> #include <stdlib.h> #include <stdint.h> void decrypt(uint32_t v[2], uint32_t const key[4]) {     unsigned int i;     uint32_t v0 = v[0], v1 = v[1], delta = 0x9E3779B8, sum = 0x66778899+delta * (33);          for (i=0; i <= 32; i++) {         v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + key[(sum>>11) & 3]);         sum -= delta;         v0 -= (((v1 << 5) ^ (v1 >> 6)) + v1) ^ (sum + key[sum & 3]);
      }     v[0] = v0; v[1] = v1;      }
  int main() {     uint32_t const k[4] = {0x6E982837,0x44332211,0x11223344,0x3728986E};     char enc[] = {0x50, 0xD4, 0xC8, 0xC4, 0x8F, 0x84, 0x40, 0xEB, 0x32, 0x81,                   0x8F, 0x85, 0x6C, 0xB2, 0x2B, 0x06, 0xBF, 0x05, 0x35, 0x5D,                   0x2E, 0xE3, 0x7D, 0x46, 0x8D, 0x35, 0x01, 0x70, 0x3A, 0x80,                   0x81, 0xC5, 0xE6, 0x71, 0xD3, 0xD6, 0x50, 0x69, 0x6F, 0xE2,                   0x6E, 0x78, 0x14, 0xD8};     for(int i=36; i>=0; i-=1){         decrypt(&enc[i], k);
      }     for (int i = 0; i < 44; i++) {         printf("0x%x,", enc[i]&0xff);     }     return 0; }
 
  |