J'ai ce code C à faire multiplications sur GF (8):Optimize y = x * x dans le champ Galois arithmétique
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);
}
qui est plus ou moins la mise en œuvre du texte livre.
Je me demande s'il y a une optimisation intelligente pour l'algorithme ci-dessus si je peux affirmer que a est toujours b, par ex. Je fais la quadrature au lieu de la multiplication. Je ne suis pas après une utilisation cryptographique btw. Je veux juste utiliser le fait que x * x dans GF (8) entrelace les bits de x avec zéro bits un par un.
Il y a déjà des méthodes assez intelligentes pour faire l'entrelacement des bits, mais comme j'ai découvert que x * x dans GF (8) fait l'entrelacement des bits (par accident) je ne peux pas m'empêcher de l'utiliser pour les optimisations d'entrelacement de bits.
Des idées?
Mais je suis désolé, je ne pense pas qu'ils utilisent l'effet d'équerrage (entrelacement de bits) dont vous parlez explicitement (ou si cela en compte vraiment améliore les performances). –
La méthode basée sur la table devrait être beaucoup plus rapide, que vous soyez au carré ou non –
L'approche basée sur les tables fait l'affaire. Merci. –