Содержащем 256 элементов.
Элементы поля представлены многочленами , а в памяти ЭВМ – байтами . Сложение элементов поля – побитовое сложение байтов по модулю 2 (⊕). Умножение элементов поля и осуществляется так: и перемножаются, затем результат приводится по модулю неприводимого многочлена , т.е. находится остаток от деления на . Многочлен представлен байтом .
Function SlowMulGF256(a,b,f: byte): byte; // Для , возвращает . // Вспомогательная процедура умножения в . // NB. – многочлен 8-ой степени, представленный своими коэффициентами, кроме единичного старшего. Var t,mask: byte; i:integer; Begin t:= 0; mask:= 1; for i:= 0 to 7 do Begin if (b and mask)<>0 then t:=t xor a; if (a and 128)= 0 then a:=a shl 1 else a:=(a shl 1) xor f; mask:= mask shl 1; end; SlowMulGF256:= t; End;
Function SlowPowerGF256 (a,b,f: byte): byte; // Возведение в степень: возвращает . // Возведение в степень в поле F256=F2[x]/f(x). Var c: byte; Begin c:= 1;
|