Advertisement
Guest User

RC5

a guest
Mar 3rd, 2022
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.03 KB | None | 0 0
  1. public override void Decrypt(byte[] inData, byte[] outData, int bufferSize)
  2. {
  3.     if (bufferSize >= 16)
  4.     {
  5.         int v41 = 0;
  6.         int v51 = 0;
  7.  
  8.         int blockCount = bufferSize >> 4;
  9.         int inDataOffset = 8;
  10.         int outDataOffset = 12;
  11.         for (int block = 0; block < blockCount; block++)
  12.         {
  13.             int v8 = key[84];
  14.             int v12 = (v8 ^ ReadDword(inData, inDataOffset / 4 - 2)) - key[82];
  15.             int v10 = v8 ^ ReadDword(inData, inDataOffset / 4 - 1);
  16.             int v9 = (v8 ^ ReadDword(inData, inDataOffset / 4 + 0)) - key[83];
  17.             int v11 = v8 ^ ReadDword(inData, inDataOffset / 4 + 1);
  18.             int arrIndex = 81;
  19.  
  20.             for (int j = 0; j < 8; j++)
  21.             {
  22.                 int v14 = v11 - key[arrIndex - 1];
  23.                 int v16 = v10 - key[arrIndex];
  24.                 int v17 = (int) __ROL4__((uint) (v9 * (2 * v9 + 1)), 5);
  25.                 int v18 = (int) __ROL4__((uint) (v12 * (2 * v12 + 1)), 5);
  26.                 int v19 = v18 ^ (int) __ROR4__((uint) v14, v17);
  27.                 int v20 = v9 - key[arrIndex - 3];
  28.                 int v21 = v17 ^ (int) __ROR4__((uint) v16, v18);
  29.  
  30.                 int v22 = v12 - key[arrIndex - 2];
  31.                 int v23 = (int) __ROL4__((uint) (v21 * (2 * v21 + 1)), 5);
  32.                 int v24 = (int) __ROL4__((uint) (v19 * (2 * v19 + 1)), 5);
  33.                 int v25 = v24 ^ (int) __ROR4__((uint) v20, v23);
  34.                 int v26 = v21 - key[arrIndex - 5];
  35.                 int v27 = v23 ^ (int) __ROR4__((uint) v22, v24);
  36.  
  37.                 int v28 = v19 - key[arrIndex - 4];
  38.                 int v29 = (int) __ROL4__((uint) (v27 * (2 * v27 + 1)), 5);
  39.                 int v30 = (int) __ROL4__((uint) (v25 * (2 * v25 + 1)), 5);
  40.                 int v31 = v30 ^ (int) __ROR4__((uint) v26, v29);
  41.                 int v32 = v27 - key[arrIndex - 7];
  42.                 int v33 = v29 ^ (int) __ROR4__((uint) v28, v30);
  43.  
  44.                 int v34 = (int) __ROL4__((uint) (v33 * (2 * v33 + 1)), 5);
  45.                 int v35 = (int) __ROL4__((uint) (v31 * (2 * v31 + 1)), 5);
  46.                 v51 = v35 ^ (int) __ROR4__((uint) v32, v34);
  47.                 v11 = v34 ^ (int) __ROR4__((uint) (v25 - key[arrIndex - 6]), v35);
  48.  
  49.                 int v37 = v33 - key[arrIndex - 9];
  50.                 int v38 = (int) __ROL4__((uint) (v11 * (2 * v11 + 1)), 5);
  51.                 int v39 = (int) __ROL4__((uint) (v51 * (2 * v51 + 1)), 5);
  52.                 int v40 = (int) __ROR4__((uint) (v31 - key[arrIndex - 8]), v39);
  53.                 arrIndex -= 10;
  54.                 v9 = v38 ^ v40;
  55.                 v41 = v39 ^ (int) __ROR4__((uint) v37, v38);
  56.                 v12 = v41;
  57.                 v10 = v51;
  58.             }
  59.  
  60.             WriteDword(outData, outDataOffset / 4 + -3, v41);
  61.             WriteDword(outData, outDataOffset / 4 + -2, v51 - key[0]);
  62.             WriteDword(outData, inDataOffset / 4, v9);
  63.             WriteDword(outData, outDataOffset / 4 + 0, v11 - key[1]);
  64.             inDataOffset += 16;
  65.             outDataOffset += 16;
  66.         }
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement