1 !sum
2 - go: GaloisFieldAffineTransform
3 commutative: false
4 documentation: !string |-
5 // NAME returns the affine transformation A * x + b in GF(2^8).
6 // Each element of A is interpreted as an 8x8 matrix of bits.
7 // Each element of x is interpreted as an 8-element vector of bits.
8 // The b argument is likewise an 8-element vector of bits.
9 // The result is z[i] = A[i/8] * x[i] + b, where * and + are performed in GF2.
10 - go: GaloisFieldAffineTransformInverse
11 commutative: false
12 documentation: !string |-
13 // NAME returns the affine transformation A * (x⁻¹ mod P) + b in GF(2^8),
14 // where the characteristic polynomial P is x^8 + x^4 + x^3 + x + 1.
15 // Each element of A is interpreted as an 8x8 matrix of bits.
16 // Each element of x is interpreted as an 8-element vector of bits.
17 // The b argument is likewise an 8-element vector of bits.
18 // The result is z[i] = A[i/8] * inv(x[i]) + b, where * and + are performed in GF2.
19 - go: GaloisFieldMul
20 commutative: false
21 documentation: !string |-
22 // NAME returns (x * y) mod P, performed in GF(2^8),
23 // where the characteristic polynomial P is x^8 + x^4 + x^3 + x + 1.
24 - go: carrylessMultiply
25 commutative: false
26
27 - go: carrylessMultiplyWidenLo
28 commutative: true
29 documentation: !string |-
30 // NAME returns the carryless (polynomial) product of the low halves
31 // of x and y.
32 //
33 // A carryless multiplication uses bitwise XOR instead of
34 // add-with-carry, for example (in base two):
35 //
36 // 11 * 11 = 11 * (10 ^ 1) = (11 * 10) ^ (11 * 1) = 110 ^ 11 = 101
37 //
38 // This also models multiplication of polynomials with coefficients
39 // from GF(2) -- 11 * 11 models (x+1)*(x+1) = x**2 + (1^1)x + 1 =
40 // x**2 + 0x + 1 = x**2 + 1 modeled by 101. (Note that "+" adds
41 // polynomial terms, but coefficients "add" with XOR.)
42
View as plain text