Estou lendo este white paper da Intel sobre multiplicação sem transporte . Descreve a multiplicação de polinômios em. Em um nível alto, isso é realizado em duas etapas: (1) multiplicação de polinômios sobree (2) reduzir o módulo de resultado em um polinômio irredutível. Usamos a representação "padrão" de polinômios de cadeia de bits, ou seja,.
O artigo fornece um algoritmo para o cálculo do polinômio restante na página 16 no algoritmo 3. No entanto, estou tendo problemas para entender o algoritmo de redução nas páginas 16-17 (Algoritmo 4). Essencialmente, acho que precisamos do algoritmo 4 para campos maiores quando nossos resultados parciais ou já não cabem mais em 128 bits. Eles dão um exemplo para a multiplicação de dois polinômios em.
De onde vêm as "constantes mágicas" 63, 62 e 57 para os turnos à direita e as "constantes mágicas" 1, 2 e 7 para os turnos à esquerda?
Por exemplo, como generalizar o algoritmo para campos menores, digamos ? Os valores de deslocamento correspondentes seriam então 15, 14, 9 e 1, 2, 7?
Na etapa final 4, o algoritmo diz para você "XOR , e um com o outro e "
porque nós fazemos isso? Tanto quanto posso ver, o resultado dessa operação XOR não é armazenado em nenhum lugar nem usado em nenhum lugar. De alguma forma, é usado para computação?