Computing over F256
The field with 256 elements is isomorphic to the set of polynomials modulo
p(
X)=
X8+
X7+
X2+
X+1 in
F2[
X] où
F2
is the field with 2 elements (integers modulo 2). We denote by
F256
= F2[X]/(p(X))
One could replace
p(
X) by any
other irreducible polynomial of degree 8 over
F2[
X]. Here,
p(
X) has an additional property, it is primitive, which means that any polynomial of degree no more than 7 is a remainder of a
Xi modulo
p(
X) for some
i.
In practice, this provides us with two representations of elements of the field, which are complementary to perform additions and multiplications.
|
&Elements
of the field F256 |
Machine representation |
exponant |
polynomial |
exponant |
polynomial |
0 |
0 |
-1 |
0 |
1 |
1 |
0 |
1 |
X |
X |
1 |
2 |
X2 |
X2 |
2 |
4 |
X3 |
X3 |
3 |
8 |
X4 |
X4 |
4 |
16 |
X5 |
X5 |
5 |
32 |
X6 |
X6 |
6 |
64 |
X7 |
X7 |
7 |
128 |
X8 |
X7+X2+X+1 |
8 |
135 |
X9 |
X7+X3+1 |
9 |
137 |
X10 |
X7+X4+X2+1 |
10 |
149 |
X11 |
X7+X5+X3+X2+1 |
11 |
173 |
X12 |
X7+X6+X4+X3+X2+1 |
12 |
221 |
X13 |
X5+X4+X3+X2+1 |
13 |
61 |
X14 |
X6+X5+X4+X3+X |
14 |
122 |
X15 |
X7+X6+X5+X4+X2 |
15 |
244 |
X16 |
X6+X5+X3+X2+X+1 |
16 |
111 |
X17 |
X7+X6+X4+X3+X2+X |
17 |
222 |
X18 |
X5+X4+X3+X+1 |
18 |
59 |
X19 |
X6+X5+X4+X2+X |
19 |
118 |
X20 |
X7+X6+X5+X3+X2 |
20 |
236 |
X21 |
X6+X4+X3+X2+X+1 |
21 |
95 |
X22 |
X7+X5+X4+X3+X2+X |
22 |
190 |
X23 |
X7+X6+X5+X4+X3+X+1 |
23 |
251 |
X24 |
X6+X5+X4+1 |
24 |
113 |
X25 |
X7+X6+X5+X |
25 |
226 |
X26 |
X6+X+1 |
26 |
67 |
X27 |
X7+X2+X |
27 |
134 |
X28 |
X7+X3+X+1 |
28 |
139 |
X29 |
X7+X4+1 |
29 |
145 |
X30 |
X7+X5+X2+1 |
30 |
165 |
X31 |
X7+X6+X3+X2+1 |
31 |
205 |
X32 |
X4+X3+X2+1 |
32 |
29 |
X33 |
X5+X4+X3+X |
33 |
58 |
X34 |
X6+X5+X4+X2 |
34 |
116 |
X35 |
X7+X6+X5+X3 |
35 |
232 |
X36 |
X6+X4+X2+X+1 |
36 |
87 |
X37 |
X7+X5+X3+X2+X |
37 |
174 |
X38 |
X7+X6+X4+X3+X+1 |
38 |
219 |
X39 |
X5+X4+1 |
39 |
49 |
X40 |
X6+X5+X |
40 |
98 |
X41 |
X7+X6+X2 |
41 |
196 |
X42 |
X3+X2+X+1 |
42 |
15 |
X43 |
X4+X3+X2+X |
43 |
30 |
X44 |
X5+X4+X3+X2 |
44 |
60 |
X45 |
X6+X5+X4+X3 |
45 |
120 |
X46 |
X7+X6+X5+X4 |
46 |
240 |
X47 |
X6+X5+X2+X+1 |
47 |
103 |
X48 |
X7+X6+X3+X2+X |
48 |
206 |
X49 |
X4+X3+X+1 |
49 |
27 |
X50 |
X5+X4+X2+X |
50 |
54 |
X51 |
X6+X5+X3+X2 |
51 |
108 |
X52 |
X7+X6+X4+X3 |
52 |
216 |
X53 |
X5+X4+X2+X+1 |
53 |
55 |
X54 |
X6+X5+X3+X2+X |
54 |
110 |
X55 |
X7+X6+X4+X3+X2 |
55 |
220 |
X56 |
X5+X4+X3+X2+X+1 |
56 |
63 |
X57 |
X6+X5+X4+X3+X2+X |
57 |
126 |
X58 |
X7+X6+X5+X4+X3+X2 |
58 |
252 |
X59 |
X6+X5+X4+X3+X2+X+1 |
59 |
127 |
X60 |
X7+X6+X5+X4+X3+X2+X |
60 |
254 |
X61 |
X6+X5+X4+X3+X+1 |
61 |
123 |
X62 |
X7+X6+X5+X4+X2+X |
62 |
246 |
X63 |
X6+X5+X3+X+1 |
63 |
107 |
X64 |
X7+X6+X4+X2+X |
64 |
214 |
X65 |
X5+X3+X+1 |
65 |
43 |
X66 |
X6+X4+X2+X |
66 |
86 |
X67 |
X7+X5+X3+X2 |
67 |
172 |
X68 |
X7+X6+X4+X3+X2+X+1 |
68 |
223 |
X69 |
X5+X4+X3+1 |
69 |
57 |
X70 |
X6+X5+X4+X |
70 |
114 |
X71 |
X7+X6+X5+X2 |
71 |
228 |
X72 |
X6+X3+X2+X+1 |
72 |
79 |
X73 |
X7+X4+X3+X2+X |
73 |
158 |
X74 |
X7+X5+X4+X3+X+1 |
74 |
187 |
X75 |
X7+X6+X5+X4+1 |
75 |
241 |
X76 |
X6+X5+X2+1 |
76 |
101 |
X77 |
X7+X6+X3+X |
77 |
202 |
X78 |
X4+X+1 |
78 |
19 |
X79 |
X5+X2+X |
79 |
38 |
X80 |
X6+X3+X2 |
80 |
76 |
X81 |
X7+X4+X3 |
81 |
152 |
X82 |
X7+X5+X4+X2+X+1 |
82 |
183 |
X83 |
X7+X6+X5+X3+1 |
83 |
233 |
X84 |
X6+X4+X2+1 |
84 |
85 |
X85 |
X7+X5+X3+X |
85 |
170 |
X86 |
X7+X6+X4+X+1 |
86 |
211 |
X87 |
X5+1 |
87 |
33 |
X88 |
X6+X |
88 |
66 |
X89 |
X7+X2 |
89 |
132 |
X90 |
X7+X3+X2+X+1 |
90 |
143 |
X91 |
X7+X4+X3+1 |
91 |
153 |
X92 |
X7+X5+X4+X2+1 |
92 |
181 |
X93 |
X7+X6+X5+X3+X2+1 |
93 |
237 |
X94 |
X6+X4+X3+X2+1 |
94 |
93 |
X95 |
X7+X5+X4+X3+X |
95 |
186 |
X96 |
X7+X6+X5+X4+X+1 |
96 |
243 |
X97 |
X6+X5+1 |
97 |
97 |
X98 |
X7+X6+X |
98 |
194 |
X99 |
X+1 |
99 |
3 |
X100 |
X2+X |
100 |
6 |
X101 |
X3+X2 |
101 |
12 |
X102 |
X4+X3 |
102 |
24 |
X103 |
X5+X4 |
103 |
48 |
X104 |
X6+X5 |
104 |
96 |
X105 |
X7+X6 |
105 |
192 |
X106 |
X2+X+1 |
106 |
7 |
X107 |
X3+X2+X |
107 |
14 |
X108 |
X4+X3+X2 |
108 |
28 |
X109 |
X5+X4+X3 |
109 |
56 |
X110 |
X6+X5+X4 |
110 |
112 |
X111 |
X7+X6+X5 |
111 |
224 |
X112 |
X6+X2+X+1 |
112 |
71 |
X113 |
X7+X3+X2+X |
113 |
142 |
X114 |
X7+X4+X3+X+1 |
114 |
155 |
X115 |
X7+X5+X4+1 |
115 |
177 |
X116 |
X7+X6+X5+X2+1 |
116 |
229 |
X117 |
X6+X3+X2+1 |
117 |
77 |
X118 |
X7+X4+X3+X |
118 |
154 |
X119 |
X7+X5+X4+X+1 |
119 |
179 |
X120 |
X7+X6+X5+1 |
120 |
225 |
X121 |
X6+X2+1 |
121 |
69 |
X122 |
X7+X3+X |
122 |
138 |
X123 |
X7+X4+X+1 |
123 |
147 |
X124 |
X7+X5+1 |
124 |
161 |
X125 |
X7+X6+X2+1 |
125 |
197 |
X126 |
X3+X2+1 |
126 |
13 |
X127 |
X4+X3+X |
127 |
26 |
X128 |
X5+X4+X2 |
128 |
52 |
X129 |
X6+X5+X3 |
129 |
104 |
X130 |
X7+X6+X4 |
130 |
208 |
X131 |
X5+X2+X+1 |
131 |
39 |
X132 |
X6+X3+X2+X |
132 |
78 |
X133 |
X7+X4+X3+X2 |
133 |
156 |
X134 |
X7+X5+X4+X3+X2+X+1 |
134 |
191 |
X135 |
X7+X6+X5+X4+X3+1 |
135 |
249 |
X136 |
X6+X5+X4+X2+1 |
136 |
117 |
X137 |
X7+X6+X5+X3+X |
137 |
234 |
X138 |
X6+X4+X+1 |
138 |
83 |
X139 |
X7+X5+X2+X |
139 |
166 |
X140 |
X7+X6+X3+X+1 |
140 |
203 |
X141 |
X4+1 |
141 |
17 |
X142 |
X5+X |
142 |
34 |
X143 |
X6+X2 |
143 |
68 |
X144 |
X7+X3 |
144 |
136 |
X145 |
X7+X4+X2+X+1 |
145 |
151 |
X146 |
X7+X5+X3+1 |
146 |
169 |
X147 |
X7+X6+X4+X2+1 |
147 |
213 |
X148 |
X5+X3+X2+1 |
148 |
45 |
X149 |
X6+X4+X3+X |
149 |
90 |
X150 |
X7+X5+X4+X2 |
150 |
180 |
X151 |
X7+X6+X5+X3+X2+X+1 |
151 |
239 |
X152 |
X6+X4+X3+1 |
152 |
89 |
X153 |
X7+X5+X4+X |
153 |
178 |
X154 |
X7+X6+X5+X+1 |
154 |
227 |
X155 |
X6+1 |
155 |
65 |
X156 |
X7+X |
156 |
130 |
X157 |
X7+X+1 |
157 |
131 |
X158 |
X7+1 |
158 |
129 |
X159 |
X7+X2+1 |
159 |
133 |
X160 |
X7+X3+X2+1 |
160 |
141 |
X161 |
X7+X4+X3+X2+1 |
161 |
157 |
X162 |
X7+X5+X4+X3+X2+1 |
162 |
189 |
X163 |
X7+X6+X5+X4+X3+X2+1 |
163 |
253 |
X164 |
X6+X5+X4+X3+X2+1 |
164 |
125 |
X165 |
X7+X6+X5+X4+X3+X |
165 |
250 |
X166 |
X6+X5+X4+X+1 |
166 |
115 |
X167 |
X7+X6+X5+X2+X |
167 |
230 |
X168 |
X6+X3+X+1 |
168 |
75 |
X169 |
X7+X4+X2+X |
169 |
150 |
X170 |
X7+X5+X3+X+1 |
170 |
171 |
X171 |
X7+X6+X4+1 |
171 |
209 |
X172 |
X5+X2+1 |
172 |
37 |
X173 |
X6+X3+X |
173 |
74 |
X174 |
X7+X4+X2 |
174 |
148 |
X175 |
X7+X5+X3+X2+X+1 |
175 |
175 |
X176 |
X7+X6+X4+X3+1 |
176 |
217 |
X177 |
X5+X4+X2+1 |
177 |
53 |
X178 |
X6+X5+X3+X |
178 |
106 |
X179 |
X7+X6+X4+X2 |
179 |
212 |
X180 |
X5+X3+X2+X+1 |
180 |
47 |
X181 |
X6+X4+X3+X2+X |
181 |
94 |
X182 |
X7+X5+X4+X3+X2 |
182 |
188 |
X183 |
X7+X6+X5+X4+X3+X2+X+1 |
183 |
255 |
X184 |
X6+X5+X4+X3+1 |
184 |
121 |
X185 |
X7+X6+X5+X4+X |
185 |
242 |
X186 |
X6+X5+X+1 |
186 |
99 |
X187 |
X7+X6+X2+X |
187 |
198 |
X188 |
X3+X+1 |
188 |
11 |
X189 |
X4+X2+X |
189 |
22 |
X190 |
X5+X3+X2 |
190 |
44 |
X191 |
X6+X4+X3 |
191 |
88 |
X192 |
X7+X5+X4 |
192 |
176 |
X193 |
X7+X6+X5+X2+X+1 |
193 |
231 |
X194 |
X6+X3+1 |
194 |
73 |
X195 |
X7+X4+X |
195 |
146 |
X196 |
X7+X5+X+1 |
196 |
163 |
X197 |
X7+X6+1 |
197 |
193 |
X198 |
X2+1 |
198 |
5 |
X199 |
X3+X |
199 |
10 |
X200 |
X4+X2 |
200 |
20 |
X201 |
X5+X3 |
201 |
40 |
X202 |
X6+X4 |
202 |
80 |
X203 |
X7+X5 |
203 |
160 |
X204 |
X7+X6+X2+X+1 |
204 |
199 |
X205 |
X3+1 |
205 |
9 |
X206 |
X4+X |
206 |
18 |
X207 |
X5+X2 |
207 |
36 |
X208 |
X6+X3 |
208 |
72 |
X209 |
X7+X4 |
209 |
144 |
X210 |
X7+X5+X2+X+1 |
210 |
167 |
X211 |
X7+X6+X3+1 |
211 |
201 |
X212 |
X4+X2+1 |
212 |
21 |
X213 |
X5+X3+X |
213 |
42 |
X214 |
X6+X4+X2 |
214 |
84 |
X215 |
X7+X5+X3 |
215 |
168 |
X216 |
X7+X6+X4+X2+X+1 |
216 |
215 |
X217 |
X5+X3+1 |
217 |
41 |
X218 |
X6+X4+X |
218 |
82 |
X219 |
X7+X5+X2 |
219 |
164 |
X220 |
X7+X6+X3+X2+X+1 |
220 |
207 |
X221 |
X4+X3+1 |
221 |
25 |
X222 |
X5+X4+X |
222 |
50 |
X223 |
X6+X5+X2 |
223 |
100 |
X224 |
X7+X6+X3 |
224 |
200 |
X225 |
X4+X2+X+1 |
225 |
23 |
X226 |
X5+X3+X2+X |
226 |
46 |
X227 |
X6+X4+X3+X2 |
227 |
92 |
X228 |
X7+X5+X4+X3 |
228 |
184 |
X229 |
X7+X6+X5+X4+X2+X+1 |
229 |
247 |
X230 |
X6+X5+X3+1 |
230 |
105 |
X231 |
X7+X6+X4+X |
231 |
210 |
X232 |
X5+X+1 |
232 |
35 |
X233 |
X6+X2+X |
233 |
70 |
X234 |
X7+X3+X2 |
234 |
140 |
X235 |
X7+X4+X3+X2+X+1 |
235 |
159 |
X236 |
X7+X5+X4+X3+1 |
236 |
185 |
X237 |
X7+X6+X5+X4+X2+1 |
237 |
245 |
X238 |
X6+X5+X3+X2+1 |
238 |
109 |
X239 |
X7+X6+X4+X3+X |
239 |
218 |
X240 |
X5+X4+X+1 |
240 |
51 |
X241 |
X6+X5+X2+X |
241 |
102 |
X242 |
X7+X6+X3+X2 |
242 |
204 |
X243 |
X4+X3+X2+X+1 |
243 |
31 |
X244 |
X5+X4+X3+X2+X |
244 |
62 |
X245 |
X6+X5+X4+X3+X2 |
245 |
124 |
X246 |
X7+X6+X5+X4+X3 |
246 |
248 |
X247 |
X6+X5+X4+X2+X+1 |
247 |
119 |
X248 |
X7+X6+X5+X3+X2+X |
248 |
238 |
X249 |
X6+X4+X3+X+1 |
249 |
91 |
X250 |
X7+X5+X4+X2+X |
250 |
182 |
X251 |
X7+X6+X5+X3+X+1 |
251 |
235 |
X252 |
X6+X4+1 |
252 |
81 |
X253 |
X7+X5+X |
253 |
162 |
X254 |
X7+X6+X+1 |
254 |
195 |
|
Another option for addition is to tabulate values of (1+ [k]) for any non-zero [k] (ie k != -1);
Indeed, let TabXplusUn(k) = j with [j] = 1+[k].
Then, we have, for j >=i et i!=-1:
[i]+[j] = [i]*(1 + [j]/[i]) = [i] * ( 1+ [j-i mod 255] ) = [i]*[TabXplusUn(j-i)]
= [ i + TabXplusUn(j-i) mod 255 ]
In practice, for a small field (as here with only 256 elements),
the tabulation is the best option.