首页
社区
课程
招聘
[求助]请各位指点:求函数逆运算
发表于: 2007-9-20 15:44 3937

[求助]请各位指点:求函数逆运算

2007-9-20 15:44
3937
请各位指点以下C函数如何求逆运算,先谢啦!
C语言版的函数如下:
////////////////////////////////////////////////////////////////////////////////
// Parameter:        pBuf, 4-byte long buf
void CalculateBuf(BYTE *pBuf)
{
        BYTE bR16, bR17, bR18, bR19, bR20, bR21;

        bR18 = pBuf[1] ^ pBuf[2] ^ pBuf[3];       
        bR19 = pBuf[0] ^ pBuf[2] ^ pBuf[3];               
        bR20 = pBuf[0] ^ pBuf[1] ^ pBuf[3];               
        bR21 = pBuf[1] ^ pBuf[2] ^ pBuf[0];       

        for (int i = 0; i < 4; i++)
        {
                if (pBuf[i] & 0x80)
                {
                        bR16 = 0x1b;
                }
                else
                {
                        bR16 = 0;
                }
               
                pBuf[i] <<= 1;
                pBuf[i] ^= bR16;
        }
       
        ////////////////////////////////////////////////////////////
        bR18 ^= pBuf[0] ^ pBuf[1];
       
        bR19 ^= pBuf[2] ^ pBuf[1];

        bR20 ^= pBuf[2] ^ pBuf[3];

        bR21 ^= pBuf[0] ^ pBuf[3];
       
        ///////// here repeat
        for (i = 0; i < 4; i++)
        {
                if (pBuf[i] & 0x80)
                {
                        bR16 = 0x1b;
                }
                else
                {
                        bR16 = 0;
                }
               
                pBuf[i] <<= 1;
                pBuf[i] ^= bR16;
        }
       
        bR18 ^= pBuf[2] ^ pBuf[0];
       
        bR19 ^= pBuf[1] ^ pBuf[3];
       
        bR20 ^= pBuf[2] ^ pBuf[0];
       
        bR21 ^= pBuf[1] ^ pBuf[3];       
       
        ///////////////////////here
        for (i = 0; i < 4; i++)
        {
                if (pBuf[i] & 0x80)
                {
                        bR16 = 0x1b;
                }
                else
                {
                        bR16 = 0;
                }
               
                pBuf[i] <<= 1;
                pBuf[i] ^= bR16;
        }
       
        bR17 = pBuf[0] ^ pBuf[1] ^ pBuf[2] ^ pBuf[3];
        bR18 ^= bR17;
        bR19 ^= bR17;
        bR20 ^= bR17;
        bR21 ^= bR17;
       
        pBuf[0] = bR18;
        pBuf[1] = bR19;
        pBuf[2] = bR20;
        pBuf[3] = bR21;
}

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
已搞定,谢谢!
2007-9-21 08:57
0
游客
登录 | 注册 方可回帖
返回
//