在lua中编写一个函数(包含按位运算)

MOH*_*MED 3 c lua

我有以下alogorithm,我想在lua中实现它.我锁定了如何在lua中实现按位运算.

void wepkey64(char *passphrase, unsigned char k64[4][5])
{
    unsigned char pseed[4] = {0};
    unsigned int randNumber, tmp;
    int i, j;

    for(i = 0; i < strlen(passphrase); i++)
    {
        pseed[i%4] ^= (unsigned char) passphrase[i];
    }

    randNumber = pseed[0] | (pseed[1] << 8) | (pseed[2] << 16) | (pseed[3] << 24);

    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 5; j++)
        {
            randNumber = (randNumber * 0x343fd + 0x269ec3) & 0xffffffff;
            tmp = (randNumber >> 16) & 0xff;
            k64[i][j] = (unsigned char) tmp;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在lua scipting中,这个功能相当于什么?特别是按位操作

jbr*_*jbr 5

在标准的Lua 5.1中,没有位操作.有两个解决方案,但你的问题.

  1. 您可以尝试使用LuaJITBitOp.
  2. 您可以将C函数编译为共享库,并直接从Lua调用它.

我选择2.

  • 我选择1(LuaJIT附带BitOp). (2认同)