Page 269 - Hardware Implementation of Finite-Field Arithmetic
P. 269
m
Operations over GF (2 )—Normal Bases 249
caux(i) := caux(i) xor t1(i);
end loop;
end loop;
c2 <= caux;
end process;
P2: process(a,b)
variable yij: yij_array;
variable r,t2: std_logic_vector(M-1 downto 0);
variable s,te,aux2: integer;
begin
for i in 0 to m-1 loop
t2(i) := ‘0’;
end loop;
if (m rem 2) /= 0 then
s := h(v);
te := m;
else
s := h(v)/2;
te := m/2;
end if;
for i in 0 to te-1 loop
yij(i)(v):=(a(i)xor a((v+i) mod m)) and (b(i)xor
b((v+i) mod m));
end loop;
if (m rem 2) = 0 then
for i in 0 to (m/2)-1 loop
yij(i+v)(v) := yij(i)(v);
end loop;
end if;
for k in 1 to s loop
for i in 0 to te-1 loop
aux2 := (i - w(v)(k)) mod m;
r(i) := yij(aux2)(v);
end loop;
if (m rem 2) = 0 then
for i in 0 to (m/2)-1 loop
r(i+m/2) := r(i);
end loop;
end if;
for i in 0 to m-1 loop
t2(i) := t2(i) xor r(i);
end loop;
end loop;
t <= t2;
end process;
c <= c2 xor t;
8.4 Exponentiation
m
m
For an arbitrary a in the finite field GF(2 ), and an integer e (1 ≤ e ≤ 2 – 1),
m
let b = a , where b is in GF(2 ). In general, an arbitrary integer power of
e
an element a ∈ GF(2 ) can be computed using the binary method [Knu81],
m