# Galois Field Arithmetic Library

The branch in mathematics known as Galois theory (pronounced as ”gal-wah”) which is based on abstract algebra was discovered by a young brilliant french mathematician known as Evariste Galois. The branch deals mainly with the analysis and formal description of binary and unary operations upon polynomials comprised of elements within a Galois field that then describe polynomials within the field itself. The C++ Galois Field Arithmetic Library, implements a specialised version of Galois Fields known as extension fields or in other words fields of the form GF(2^m) and was developed as a base for programming tasks that involved cryptography and error correcting codes. The library is simple, consise and straight forward, it also uses a series of look-up tables to increase performance of calculations. The library is broken into three classes, Galois Field, Galois Field Element and Galois Field Polynomial. Operations such as addition, subtraction, multiplication, division, modulus and exponentiation can occur over both field elements and field polynomials and also left and right shifting can occur for field polynomials. The binary extensions of Galois fields (GF(2^m)) are used extensively in digital logic and circuitry. Galois field polynomials within the branch are seen as mathematical equivalents of Linear Feed-Back Shift Register (LFSR) and operations upon elements are accomplished via bitwise operations such as xor, and, or logic. Applications within the fields of cryptography and error correcting codes use Galois fields extensively in such things as S-Box implementations (bit scramblers), strong random number generators and algebraic codes. Galois theory is used to describe and generalize results seen in these fields, for example the AES algorithm can be represented with just a few lines of mathematics using Galois theory and some other related abstract algebra (Source: http://freecode.com/)