fork download
  1. #include <stdio.h>
  2.  
  3. unsigned char FFMul(unsigned char a, unsigned char b) {
  4. unsigned char aa = a, bb = b, r = 0, t;
  5. while (aa != 0) {
  6. if ((aa & 1) != 0)
  7. r = r ^ bb;
  8. t = bb & 0x80;
  9. bb = bb << 1;
  10. if (t != 0)
  11. bb = bb ^ 0x1b;
  12. aa = aa >> 1;
  13. }
  14. return r;
  15. }
  16.  
  17. int main(void) {
  18. unsigned char x1 = 0x63;
  19. unsigned char x2 = FFMul(x1, 2);
  20. unsigned char x4 = FFMul(x2, 2);
  21. unsigned char x8 = FFMul(x4, 2);
  22.  
  23. unsigned char x7_calc = FFMul(x1, 7);
  24. unsigned char x7_xor1 = FFMul(x1, 5) ^ FFMul(x1, 2);
  25. unsigned char x7_xor2 = FFMul(x1, 8) ^ FFMul(x1, 1);
  26.  
  27. printf("x1 = %#4x\n", x1);
  28. printf("x2 = %#4x\n", x2);
  29. printf("x4 = %#4x\n", x4);
  30. printf("x8 = %#4x\n", x8);
  31. printf("\n");
  32.  
  33. printf("x7 = %#4x (calc)\n", x7_calc);
  34. printf("x7 = %#4x (x5 + x2)\n", x7_xor1);
  35. printf("x7 = %#4x (x8 - x1)\n", x7_xor2);
  36.  
  37. return 0;
  38. }
  39.  
Success #stdin #stdout 0s 2292KB
stdin
Standard input is empty
stdout
x1 = 0x63
x2 = 0xc6
x4 = 0x97
x8 = 0x35

x7 = 0x32 (calc)
x7 = 0x32 (x5 + x2)
x7 = 0x56 (x8 - x1)