Calculs dans F256






Le corps à 256 éléments est isomorphe à l'ensemble des polynômes modulo p(a)=a8+a7+a2+a+1 dansF2[a] où F2 est le corps à 2 éléments (les entiers modulo 2). On note
F256 = F2[a]/(p(a))
On pourrait remplacer p(a) par n'importe quel autre polynôme irréductible dans F2[a]. Ici, p(a) a une propriété supplémentaire, il est primitif, ce qui signifie que tout polynôme de degré au plus 7 est le reste d'un ai modulo p(a). En pratique cela nous fournit 2 représentations des éléments du corps en machine, qui peuvent être utilisées de manière complémentaire pour réaliser l'addition et la multiplication.

Éléments du corps F256 Représentation en machine
exposant polynôme exposant polynôme
0 0 -1 0
1 1 0 1
a a 1 2
a2 a2 2 4
a3 a3 3 8
a4 a4 4 16
a5 a5 5 32
a6 a6 6 64
a7 a7 7 128
a8 a7+a2+a+1 8 135
a9 a7+a3+1 9 137
a10 a7+a4+a2+1 10 149
a11 a7+a5+a3+a2+1 11 173
a12 a7+a6+a4+a3+a2+1 12 221
a13 a5+a4+a3+a2+1 13 61
a14 a6+a5+a4+a3+a 14 122
a15 a7+a6+a5+a4+a2 15 244
a16 a6+a5+a3+a2+a+1 16 111
a17 a7+a6+a4+a3+a2+a 17 222
a18 a5+a4+a3+a+1 18 59
a19 a6+a5+a4+a2+a 19 118
a20 a7+a6+a5+a3+a2 20 236
a21 a6+a4+a3+a2+a+1 21 95
a22 a7+a5+a4+a3+a2+a 22 190
a23 a7+a6+a5+a4+a3+a+1 23 251
a24 a6+a5+a4+1 24 113
a25 a7+a6+a5+a 25 226
a26 a6+a+1 26 67
a27 a7+a2+a 27 134
a28 a7+a3+a+1 28 139
a29 a7+a4+1 29 145
a30 a7+a5+a2+1 30 165
a31 a7+a6+a3+a2+1 31 205
a32 a4+a3+a2+1 32 29
a33 a5+a4+a3+a 33 58
a34 a6+a5+a4+a2 34 116
a35 a7+a6+a5+a3 35 232
a36 a6+a4+a2+a+1 36 87
a37 a7+a5+a3+a2+a 37 174
a38 a7+a6+a4+a3+a+1 38 219
a39 a5+a4+1 39 49
a40 a6+a5+a 40 98
a41 a7+a6+a2 41 196
a42 a3+a2+a+1 42 15
a43 a4+a3+a2+a 43 30
a44 a5+a4+a3+a2 44 60
a45 a6+a5+a4+a3 45 120
a46 a7+a6+a5+a4 46 240
a47 a6+a5+a2+a+1 47 103
a48 a7+a6+a3+a2+a 48 206
a49 a4+a3+a+1 49 27
a50 a5+a4+a2+a 50 54
a51 a6+a5+a3+a2 51 108
a52 a7+a6+a4+a3 52 216
a53 a5+a4+a2+a+1 53 55
a54 a6+a5+a3+a2+a 54 110
a55 a7+a6+a4+a3+a2 55 220
a56 a5+a4+a3+a2+a+1 56 63
a57 a6+a5+a4+a3+a2+a 57 126
a58 a7+a6+a5+a4+a3+a2 58 252
a59 a6+a5+a4+a3+a2+a+1 59 127
a60 a7+a6+a5+a4+a3+a2+a 60 254
a61 a6+a5+a4+a3+a+1 61 123
a62 a7+a6+a5+a4+a2+a 62 246
a63 a6+a5+a3+a+1 63 107
a64 a7+a6+a4+a2+a 64 214
a65 a5+a3+a+1 65 43
a66 a6+a4+a2+a 66 86
a67 a7+a5+a3+a2 67 172
a68 a7+a6+a4+a3+a2+a+1 68 223
a69 a5+a4+a3+1 69 57
a70 a6+a5+a4+a 70 114
a71 a7+a6+a5+a2 71 228
a72 a6+a3+a2+a+1 72 79
a73 a7+a4+a3+a2+a 73 158
a74 a7+a5+a4+a3+a+1 74 187
a75 a7+a6+a5+a4+1 75 241
a76 a6+a5+a2+1 76 101
a77 a7+a6+a3+a 77 202
a78 a4+a+1 78 19
a79 a5+a2+a 79 38
a80 a6+a3+a2 80 76
a81 a7+a4+a3 81 152
a82 a7+a5+a4+a2+a+1 82 183
a83 a7+a6+a5+a3+1 83 233
a84 a6+a4+a2+1 84 85
a85 a7+a5+a3+a 85 170
a86 a7+a6+a4+a+1 86 211
a87 a5+1 87 33
a88 a6+a 88 66
a89 a7+a2 89 132
a90 a7+a3+a2+a+1 90 143
a91 a7+a4+a3+1 91 153
a92 a7+a5+a4+a2+1 92 181
a93 a7+a6+a5+a3+a2+1 93 237
a94 a6+a4+a3+a2+1 94 93
a95 a7+a5+a4+a3+a 95 186
a96 a7+a6+a5+a4+a+1 96 243
a97 a6+a5+1 97 97
a98 a7+a6+a 98 194
a99 a+1 99 3
a100 a2+a 100 6
a101 a3+a2 101 12
a102 a4+a3 102 24
a103 a5+a4 103 48
a104 a6+a5 104 96
a105 a7+a6 105 192
a106 a2+a+1 106 7
a107 a3+a2+a 107 14
a108 a4+a3+a2 108 28
a109 a5+a4+a3 109 56
a110 a6+a5+a4 110 112
a111 a7+a6+a5 111 224
a112 a6+a2+a+1 112 71
a113 a7+a3+a2+a 113 142
a114 a7+a4+a3+a+1 114 155
a115 a7+a5+a4+1 115 177
a116 a7+a6+a5+a2+1 116 229
a117 a6+a3+a2+1 117 77
a118 a7+a4+a3+a 118 154
a119 a7+a5+a4+a+1 119 179
a120 a7+a6+a5+1 120 225
a121 a6+a2+1 121 69
a122 a7+a3+a 122 138
a123 a7+a4+a+1 123 147
a124 a7+a5+1 124 161
a125 a7+a6+a2+1 125 197
a126 a3+a2+1 126 13
a127 a4+a3+a 127 26
a128 a5+a4+a2 128 52
a129 a6+a5+a3 129 104
a130 a7+a6+a4 130 208
a131 a5+a2+a+1 131 39
a132 a6+a3+a2+a 132 78
a133 a7+a4+a3+a2 133 156
a134 a7+a5+a4+a3+a2+a+1 134 191
a135 a7+a6+a5+a4+a3+1 135 249
a136 a6+a5+a4+a2+1 136 117
a137 a7+a6+a5+a3+a 137 234
a138 a6+a4+a+1 138 83
a139 a7+a5+a2+a 139 166
a140 a7+a6+a3+a+1 140 203
a141 a4+1 141 17
a142 a5+a 142 34
a143 a6+a2 143 68
a144 a7+a3 144 136
a145 a7+a4+a2+a+1 145 151
a146 a7+a5+a3+1 146 169
a147 a7+a6+a4+a2+1 147 213
a148 a5+a3+a2+1 148 45
a149 a6+a4+a3+a 149 90
a150 a7+a5+a4+a2 150 180
a151 a7+a6+a5+a3+a2+a+1 151 239
a152 a6+a4+a3+1 152 89
a153 a7+a5+a4+a 153 178
a154 a7+a6+a5+a+1 154 227
a155 a6+1 155 65
a156 a7+a 156 130
a157 a7+a+1 157 131
a158 a7+1 158 129
a159 a7+a2+1 159 133
a160 a7+a3+a2+1 160 141
a161 a7+a4+a3+a2+1 161 157
a162 a7+a5+a4+a3+a2+1 162 189
a163 a7+a6+a5+a4+a3+a2+1 163 253
a164 a6+a5+a4+a3+a2+1 164 125
a165 a7+a6+a5+a4+a3+a 165 250
a166 a6+a5+a4+a+1 166 115
a167 a7+a6+a5+a2+a 167 230
a168 a6+a3+a+1 168 75
a169 a7+a4+a2+a 169 150
a170 a7+a5+a3+a+1 170 171
a171 a7+a6+a4+1 171 209
a172 a5+a2+1 172 37
a173 a6+a3+a 173 74
a174 a7+a4+a2 174 148
a175 a7+a5+a3+a2+a+1 175 175
a176 a7+a6+a4+a3+1 176 217
a177 a5+a4+a2+1 177 53
a178 a6+a5+a3+a 178 106
a179 a7+a6+a4+a2 179 212
a180 a5+a3+a2+a+1 180 47
a181 a6+a4+a3+a2+a 181 94
a182 a7+a5+a4+a3+a2 182 188
a183 a7+a6+a5+a4+a3+a2+a+1 183 255
a184 a6+a5+a4+a3+1 184 121
a185 a7+a6+a5+a4+a 185 242
a186 a6+a5+a+1 186 99
a187 a7+a6+a2+a 187 198
a188 a3+a+1 188 11
a189 a4+a2+a 189 22
a190 a5+a3+a2 190 44
a191 a6+a4+a3 191 88
a192 a7+a5+a4 192 176
a193 a7+a6+a5+a2+a+1 193 231
a194 a6+a3+1 194 73
a195 a7+a4+a 195 146
a196 a7+a5+a+1 196 163
a197 a7+a6+1 197 193
a198 a2+1 198 5
a199 a3+a 199 10
a200 a4+a2 200 20
a201 a5+a3 201 40
a202 a6+a4 202 80
a203 a7+a5 203 160
a204 a7+a6+a2+a+1 204 199
a205 a3+1 205 9
a206 a4+a 206 18
a207 a5+a2 207 36
a208 a6+a3 208 72
a209 a7+a4 209 144
a210 a7+a5+a2+a+1 210 167
a211 a7+a6+a3+1 211 201
a212 a4+a2+1 212 21
a213 a5+a3+a 213 42
a214 a6+a4+a2 214 84
a215 a7+a5+a3 215 168
a216 a7+a6+a4+a2+a+1 216 215
a217 a5+a3+1 217 41
a218 a6+a4+a 218 82
a219 a7+a5+a2 219 164
a220 a7+a6+a3+a2+a+1 220 207
a221 a4+a3+1 221 25
a222 a5+a4+a 222 50
a223 a6+a5+a2 223 100
a224 a7+a6+a3 224 200
a225 a4+a2+a+1 225 23
a226 a5+a3+a2+a 226 46
a227 a6+a4+a3+a2 227 92
a228 a7+a5+a4+a3 228 184
a229 a7+a6+a5+a4+a2+a+1 229 247
a230 a6+a5+a3+1 230 105
a231 a7+a6+a4+a 231 210
a232 a5+a+1 232 35
a233 a6+a2+a 233 70
a234 a7+a3+a2 234 140
a235 a7+a4+a3+a2+a+1 235 159
a236 a7+a5+a4+a3+1 236 185
a237 a7+a6+a5+a4+a2+1 237 245
a238 a6+a5+a3+a2+1 238 109
a239 a7+a6+a4+a3+a 239 218
a240 a5+a4+a+1 240 51
a241 a6+a5+a2+a 241 102
a242 a7+a6+a3+a2 242 204
a243 a4+a3+a2+a+1 243 31
a244 a5+a4+a3+a2+a 244 62
a245 a6+a5+a4+a3+a2 245 124
a246 a7+a6+a5+a4+a3 246 248
a247 a6+a5+a4+a2+a+1 247 119
a248 a7+a6+a5+a3+a2+a 248 238
a249 a6+a4+a3+a+1 249 91
a250 a7+a5+a4+a2+a 250 182
a251 a7+a6+a5+a3+a+1 251 235
a252 a6+a4+1 252 81
a253 a7+a5+a 253 162
a254 a7+a6+a+1 254 195

Une alternative pour l'addition est de tabuler les valeurs de (1+ [k]) pour tout [k] non nul (ie k != -1);
En effet, soit TabXplusUn(k) = j avec [j] = 1+[k].
On a alors, pour 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 ]

En pratique, pour le cas d'un petit corps (comme ici avec 256 éléments), la tabulation du corps est préférable [cf LinBox/Givaro].