我有以下算法,我想在bash
中实现它。
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;
}
}
}
bash
中的此功能等效于什么? 最佳答案
您确定系统上的/ bin / sh实际上是Bourne Shell吗?在许多系统上,/ bin / sh实际上是Boune-Again SHell(bash)。.您可以使用以下命令进行检查:
sh --version
如果您有权访问
gawk
,则此处具有按位运算符:http://www.gnu.org/software/gawk/manual/html_node/Bitwise-Functions.html我认为原始的
awk
可能缺少这些运算符。但是同样,像sh
和bash
一样,awk
在许多系统上通常是gawk
。