Left = Regular Multiplication, Right = Bassless Multiplication
1 1 0 1 1 1 0 1 * 1 0 0 1 1 0 0 1 ------------ --> -------------- (1)1 1 0 1 <-- (1) is carry 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 + 1 1 0 1 + GF(2) or XOR ------------- --------------- 1 1 1 0 1 0 1 1 1 0 0 1 0 1
Each 1 or 0 in a diagonally descending matrix is ββa partial product of one source bit from the vector "1101" and one bit of the source from another vector "1001".
The correct applications are found in CRC (ECC) error correction code calculations (Reed Solomon, BCH) and cryptography (elliptic curves, internal AES elements).
Illustrating the connection with polynomial multiplication, the operation described above is summarized as
1101 == x^3 + x^2 + 0 + 1; 1001 == x^3 + 0 + 0 + 1;
Regular polynomial multiplication: p (x) * (x ^ 3 + 1) == p (x) * x ^ 3 + p (x) ==
(x^3 + x^2 + 1)(x^3 + 1) == x^6+x^5+x^3 + x^3+x^2+1 == 1x^6 + 1x^5 + 0x^4 + 2x^3 + 1^x2 + 0x + 1 == "1102101"
In GF (2), each coefficient is simply calculated modulo 2, making 1100101b .
The data type in GF looks the same as uint8_t, uint16_t, or possibly up to 128_t in that the data type for GF (2 ^ 8) contains 256 unique bitpatterns. However, for example, the bitpattern '00010001', for example. does not have a traditional interpretation. (This is not 17 decimal, but perhaps the 123rd degree of βunityβ modulo another polynomial.) Multiplying this number by the same βunityβ modulo the generator polynomial g (x), leads to the 124th degree, etc. d. Then the properties (identities) of the final fields have only interesting applications - such that you can (remotely) easily calculate which 32-bit number to add to the file so that it corresponds to the 32-bit CRC; or you can use properties to parallelize the calculation of crc or to implement multiplication of a signal with a Fourier-like transformation in finite fields (theoretical number of numbers).
source share