C# 这段代码是什么样的玩弄技巧? int-iHex=0x42F4; int-iResult=0; Int16[]iLookupTable=新的Int16[16]; 对于(int i=0;i>=1; } if(iLookupTable[0]==1) iResult+=0x8; if(iLookupTable[1]==1) iResult+=0x800; if(iLookupTable[2]==1) iResult+=0x4; 如果(iLookupTable[3]==1) iResult+=0x400; if(iLookupTable[4]==1) iResult+=0x2; 如果(iLookupTable[5]==1) iResult+=0x200; if(iLookupTable[6]==1) iResult+=0x1; if(iLookupTable[7]==1) iResult+=0x100; if(iLookupTable[8]==1) iResult+=0x1000; if(iLookupTable[9]==1) iResult+=0x10; if(iLookupTable[10]==1) iResult+=0x2000; if(iLookupTable[11]==1) iResult+=0x20; if(iLookupTable[12]==1) iResult+=0x4000; if(iLookupTable[13]==1) iResult+=0x40; if(iLookupTable[14]==1) iResult+=0x8000; if(iLookupTable[15]==1) iResult+=0x80; MessageBox.Show(“0x”+iResult.ToString(“X”); //输出:0x8317
我已经反汇编并反编译了一个使用16位十六进制数的旧程序,在进行了一些位旋转攻击后,它将16位结果输出到屏幕,上面的代码就是它所做的,有人能告诉我这段代码是什么类型的位旋转攻击吗?如果你使用原始的16位,并将它们从0到F进行编号:C# 这段代码是什么样的玩弄技巧? int-iHex=0x42F4; int-iResult=0; Int16[]iLookupTable=新的Int16[16]; 对于(int i=0;i>=1; } if(iLookupTable[0]==1) iResult+=0x8; if(iLookupTable[1]==1) iResult+=0x800; if(iLookupTable[2]==1) iResult+=0x4; 如果(iLookupTable[3]==1) iResult+=0x400; if(iLookupTable[4]==1) iResult+=0x2; 如果(iLookupTable[5]==1) iResult+=0x200; if(iLookupTable[6]==1) iResult+=0x1; if(iLookupTable[7]==1) iResult+=0x100; if(iLookupTable[8]==1) iResult+=0x1000; if(iLookupTable[9]==1) iResult+=0x10; if(iLookupTable[10]==1) iResult+=0x2000; if(iLookupTable[11]==1) iResult+=0x20; if(iLookupTable[12]==1) iResult+=0x4000; if(iLookupTable[13]==1) iResult+=0x40; if(iLookupTable[14]==1) iResult+=0x8000; if(iLookupTable[15]==1) iResult+=0x80; MessageBox.Show(“0x”+iResult.ToString(“X”); //输出:0x8317,c#,bit-manipulation,C#,Bit Manipulation,我已经反汇编并反编译了一个使用16位十六进制数的旧程序,在进行了一些位旋转攻击后,它将16位结果输出到屏幕,上面的代码就是它所做的,有人能告诉我这段代码是什么类型的位旋转攻击吗?如果你使用原始的16位,并将它们从0到F进行编号: int iHex = 0x42F4; int iResult = 0; Int16[] iLookupTable = new Int16[16]; for (int i = 0; i < 16; i
int iHex = 0x42F4;
int iResult = 0;
Int16[] iLookupTable = new Int16[16];
for (int i = 0; i < 16; i++)
{
iLookupTable[i] = (Int16)(iHex & 1);
iHex >>= 1;
}
if (iLookupTable[0] == 1)
iResult += 0x8;
if (iLookupTable[1] == 1)
iResult += 0x800;
if (iLookupTable[2] == 1)
iResult += 0x4;
if (iLookupTable[3] == 1)
iResult += 0x400;
if (iLookupTable[4] == 1)
iResult += 0x2;
if (iLookupTable[5] == 1)
iResult += 0x200;
if (iLookupTable[6] == 1)
iResult += 0x1;
if (iLookupTable[7] == 1)
iResult += 0x100;
if (iLookupTable[8] == 1)
iResult += 0x1000;
if (iLookupTable[9] == 1)
iResult += 0x10;
if (iLookupTable[10] == 1)
iResult += 0x2000;
if (iLookupTable[11] == 1)
iResult += 0x20;
if (iLookupTable[12] == 1)
iResult += 0x4000;
if (iLookupTable[13] == 1)
iResult += 0x40;
if (iLookupTable[14] == 1)
iResult += 0x8000;
if (iLookupTable[15] == 1)
iResult += 0x80;
MessageBox.Show("0x" + iResult.ToString("X"));
// Output: 0x8317
重新排列的值按以下顺序包含这些位:
"0123 4567 89AB CDEF"
这不是我所知道的一种默认操作,比如从小到大端的编码,但其中肯定有一种模式。可能某些值正在混淆,或者这是加密/哈希函数的一部分 如果将原始16位从0到F进行编号:
int iHex = 0x42F4;
int iResult = 0;
Int16[] iLookupTable = new Int16[16];
for (int i = 0; i < 16; i++)
{
iLookupTable[i] = (Int16)(iHex & 1);
iHex >>= 1;
}
if (iLookupTable[0] == 1)
iResult += 0x8;
if (iLookupTable[1] == 1)
iResult += 0x800;
if (iLookupTable[2] == 1)
iResult += 0x4;
if (iLookupTable[3] == 1)
iResult += 0x400;
if (iLookupTable[4] == 1)
iResult += 0x2;
if (iLookupTable[5] == 1)
iResult += 0x200;
if (iLookupTable[6] == 1)
iResult += 0x1;
if (iLookupTable[7] == 1)
iResult += 0x100;
if (iLookupTable[8] == 1)
iResult += 0x1000;
if (iLookupTable[9] == 1)
iResult += 0x10;
if (iLookupTable[10] == 1)
iResult += 0x2000;
if (iLookupTable[11] == 1)
iResult += 0x20;
if (iLookupTable[12] == 1)
iResult += 0x4000;
if (iLookupTable[13] == 1)
iResult += 0x40;
if (iLookupTable[14] == 1)
iResult += 0x8000;
if (iLookupTable[15] == 1)
iResult += 0x80;
MessageBox.Show("0x" + iResult.ToString("X"));
// Output: 0x8317
重新排列的值按以下顺序包含这些位:
"0123 4567 89AB CDEF"
这不是我所知道的一种默认操作,比如从小到大端的编码,但其中肯定有一种模式。可能某些值正在混淆,或者这是加密/哈希函数的一部分 如果将原始16位从0到F进行编号:
int iHex = 0x42F4;
int iResult = 0;
Int16[] iLookupTable = new Int16[16];
for (int i = 0; i < 16; i++)
{
iLookupTable[i] = (Int16)(iHex & 1);
iHex >>= 1;
}
if (iLookupTable[0] == 1)
iResult += 0x8;
if (iLookupTable[1] == 1)
iResult += 0x800;
if (iLookupTable[2] == 1)
iResult += 0x4;
if (iLookupTable[3] == 1)
iResult += 0x400;
if (iLookupTable[4] == 1)
iResult += 0x2;
if (iLookupTable[5] == 1)
iResult += 0x200;
if (iLookupTable[6] == 1)
iResult += 0x1;
if (iLookupTable[7] == 1)
iResult += 0x100;
if (iLookupTable[8] == 1)
iResult += 0x1000;
if (iLookupTable[9] == 1)
iResult += 0x10;
if (iLookupTable[10] == 1)
iResult += 0x2000;
if (iLookupTable[11] == 1)
iResult += 0x20;
if (iLookupTable[12] == 1)
iResult += 0x4000;
if (iLookupTable[13] == 1)
iResult += 0x40;
if (iLookupTable[14] == 1)
iResult += 0x8000;
if (iLookupTable[15] == 1)
iResult += 0x80;
MessageBox.Show("0x" + iResult.ToString("X"));
// Output: 0x8317
重新排列的值按以下顺序包含这些位:
"0123 4567 89AB CDEF"
这不是我所知道的一种默认操作,比如从小到大端的编码,但其中肯定有一种模式。可能某些值正在混淆,或者这是加密/哈希函数的一部分 如果将原始16位从0到F进行编号:
int iHex = 0x42F4;
int iResult = 0;
Int16[] iLookupTable = new Int16[16];
for (int i = 0; i < 16; i++)
{
iLookupTable[i] = (Int16)(iHex & 1);
iHex >>= 1;
}
if (iLookupTable[0] == 1)
iResult += 0x8;
if (iLookupTable[1] == 1)
iResult += 0x800;
if (iLookupTable[2] == 1)
iResult += 0x4;
if (iLookupTable[3] == 1)
iResult += 0x400;
if (iLookupTable[4] == 1)
iResult += 0x2;
if (iLookupTable[5] == 1)
iResult += 0x200;
if (iLookupTable[6] == 1)
iResult += 0x1;
if (iLookupTable[7] == 1)
iResult += 0x100;
if (iLookupTable[8] == 1)
iResult += 0x1000;
if (iLookupTable[9] == 1)
iResult += 0x10;
if (iLookupTable[10] == 1)
iResult += 0x2000;
if (iLookupTable[11] == 1)
iResult += 0x20;
if (iLookupTable[12] == 1)
iResult += 0x4000;
if (iLookupTable[13] == 1)
iResult += 0x40;
if (iLookupTable[14] == 1)
iResult += 0x8000;
if (iLookupTable[15] == 1)
iResult += 0x80;
MessageBox.Show("0x" + iResult.ToString("X"));
// Output: 0x8317
重新排列的值按以下顺序包含这些位:
"0123 4567 89AB CDEF"
这不是我所知道的一种默认操作,比如从小到大端的编码,但其中肯定有一种模式。可能某些值正在混淆,或者这是加密/哈希函数的一部分 如果您对原始数字的位进行如下寻址:
0123 4567 89AB CDEF
然后将它们重新排列为以下顺序:
1357 ECA8 0246 FDB9
首先是奇数位,然后是偶数位,第二和第四个nyble的顺序与第一和第三个nyble的顺序相反
好的,现在让我们玩:
"6420 9BDF 7531 8ACE"
int-iHex=0x42F4;
int-iResult=0;
UInt16[]位=新的UInt16[16]{0x8、0x800、0x4、0x400、0x2、0x200、0x1、0x100,
0x1000、0x10、0x2000、0x20、0x4000、0x40、0x8000、0x80};
对于(int i=0;i<16;i++)
{
如果((iHex&1)==1)
i结果+=位[i];
iHex>>=1;
}
MessageBox.Show(“0x”+iResult.ToString(“X”);
//输出:0x8317
如果您对原始数字的位进行如下寻址:
0123 4567 89AB CDEF
然后将它们重新排列为以下顺序:
1357 ECA8 0246 FDB9
首先是奇数位,然后是偶数位,第二和第四个nyble的顺序与第一和第三个nyble的顺序相反
好的,现在让我们玩:
"6420 9BDF 7531 8ACE"
int-iHex=0x42F4;
int-iResult=0;
UInt16[]位=新的UInt16[16]{0x8、0x800、0x4、0x400、0x2、0x200、0x1、0x100,
0x1000、0x10、0x2000、0x20、0x4000、0x40、0x8000、0x80};
对于(int i=0;i<16;i++)
{
如果((iHex&1)==1)
i结果+=位[i];
iHex>>=1;
}
MessageBox.Show(“0x”+iResult.ToString(“X”);
//输出:0x8317
如果您对原始数字的位进行如下寻址:
0123 4567 89AB CDEF
然后将它们重新排列为以下顺序:
1357 ECA8 0246 FDB9
首先是奇数位,然后是偶数位,第二和第四个nyble的顺序与第一和第三个nyble的顺序相反
好的,现在让我们玩:
"6420 9BDF 7531 8ACE"
int-iHex=0x42F4;
int-iResult=0;
UInt16[]位=新的UInt16[16]{0x8、0x800、0x4、0x400、0x2、0x200、0x1、0x100,
0x1000、0x10、0x2000、0x20、0x4000、0x40、0x8000、0x80};
对于(int i=0;i<16;i++)
{
如果((iHex&1)==1)
i结果+=位[i];
iHex>>=1;
}
MessageBox.Show(“0x”+iResult.ToString(“X”);
//输出:0x8317
如果您对原始数字的位进行如下寻址:
0123 4567 89AB CDEF
然后将它们重新排列为以下顺序:
1357 ECA8 0246 FDB9
首先是奇数位,然后是偶数位,第二和第四个nyble的顺序与第一和第三个nyble的顺序相反
好的,现在让我们玩:
"6420 9BDF 7531 8ACE"
int-iHex=0x42F4;
int-iResult=0;
UInt16[]位=新的UInt16[16]{0x8,0x800,0x4,0x