我有这个 C 代码可以对 GF(8) 进行乘法运算:
int32_t GaloisMultiply (int32_t a, int32_t b)
{
int32_t i;
int32_t mask = 0x100;
int32_t y = 0;
for(i=0;i<8;i++)
{
if(b & mask)
{
y ^= a;
}
mask >>= 1;
y <<= 1;
}
if(b & 0x1)
{
y ^= a;
}
return(y);
}
这或多或少是教科书的实施。
我想知道如果我可以断言a 总是b,我是否对上述算法有一个聪明的优化,例如我做平方而不是乘法。顺便说一句,我不是在加密使用之后。我只想利用 GF(8) 中的 x*x 将 x 的位与零位一一交错的事实。
已经有非常聪明的方法来进行位交织,但是因为我发现 GF(8) 中的 x*x 做了位交织的事情(偶然)我不能停止尝试将它用于位交织优化。
有任何想法吗?