我有這樣的C代碼在GF(8)做乘法:優化Y = X * X在伽羅瓦域算術
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,例如我是否有上述算法的巧妙優化。我做平方而不是乘法。我沒有使用密碼使用btw。我只想利用GF(8)中的x * x將x的位逐位交織爲零的事實。我已經發現GF(8)中的x * x做位交織的事情(偶然),我不能停止嘗試使用它進行比特交織優化。
任何想法?
但是我很抱歉,我不認爲他們正在使用你明確提到的平方效應(比特交織)(或者考慮到這一點是否真的提高了性能)。 – 2008-09-22 20:40:04
基於表格的方法應該快一些,不管你是否正在平方 – 2008-09-22 20:44:16
基於表格的方法是有用的。謝謝。 – 2008-09-22 21:11:18