signed int __fastcall Calculation(unsigned char *a1, unsigned char *a2, unsigned char *a3)
{
char v15[16];
char v25[16];
char v23[16];
for (int i = 0; i < 16; i++)
{
v15[i] = a2[i];
v25[i] = a1[i] ^ a2[i];
}
int v6 = 0;
LOBYTE(v6 = 0);
while (1)
{
int v7 = 1 << v6;
v6++;
for (int j = 15; j > 7; j = (unsigned __int8)(j - 1))
{
if ((v7 >> j) & 1)
v7 = (unsigned __int16)((283 << (j - 8)) ^ v7);
}
v15[0] = v15[0] ^ SurfaceGrid[(BYTE)v15[0x0D]] ^ v7;
v15[1] = v15[1] ^ SurfaceGrid[(BYTE)v15[0x0E]];
v15[2] = v15[2] ^ SurfaceGrid[(BYTE)v15[0x0F]];
v15[3] = v15[3] ^ SurfaceGrid[(BYTE)v15[0x0C]];
for (int k = 4; k < 16; k = k++)
v15[k] = v15[k] ^ v15[k - 4];
for (int l = 0; l < 16; l = l++)
v23[(-3 * l & 0xF)] = SurfaceGrid[(BYTE)v25[l]];
if (v6 == 10)
break;
for (int m = 0; m < 16; m = m++)
{
int v12 = 2 * (BYTE)v23[m & 0xC | (m + 1) & 3] ^ 2 * (BYTE)v23[m] ^ (BYTE)v23[m & 0xC | (m + 1) & 3] ^ (BYTE)v23[m & 0xC | (m + 2) & 3] ^ (BYTE)v23[m & 0xC | (m + 3) & 3];
for (int n = 15; n > 7; n = n--)
{
if ((v12 >> n) & 1)
v12 = (283 << (n - 8)) ^ v12;
}
v25[m] = v15[m] ^ v12;
}
}
for (int result = 0; result < 16; result = result++)
a3[result] = v23[result] ^ v15[result];
return 0;
}
unsigned char aa1[16] = { 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 };
unsigned char aa2[16] = { 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22 };
unsigned char aa3[16] = { 0x1A, 0x20, 0x0A, 0x8C, 0x16, 0x70, 0xE1, 0xDD, 0x43, 0x19, 0x8E, 0x69, 0xAB, 0x83, 0x08, 0x4F };
Calculation(aa1, aa2, aa3);
上面的程式是用第一個引數和第二個引數計算得出來第三個引數,假如我不知道第二個引數的內容,能不能用第一個和第三個引數得出第二個引數的內容
請高手指點
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/186558.html
標籤:基礎類
上一篇:撰寫了一個DLL,用了MFC的CImage類,但是C#呼叫DLL后,在XP系統中,CImage初始化例外(微軟代碼);已發現例外陳述句,但是不知道怎么解決
下一篇:一道求分頁存盤管理系統的題
