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# 这段代码是什么样的玩弄技巧? 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

我已经反汇编并反编译了一个使用16位十六进制数的旧程序,在进行了一些位旋转攻击后,它将16位结果输出到屏幕,上面的代码就是它所做的,有人能告诉我这段代码是什么类型的位旋转攻击吗?

如果你使用原始的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"

这不是我所知道的一种默认操作,比如从小到大端的编码,但其中肯定有一种模式。可能某些值正在混淆,或者这是加密/哈希函数的一部分

如果将原始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