Binary Polynomial represented by an integer
Modulecrypton-1.0.4Haskell2010
Crypto.Number.F2m
This module provides basic arithmetic operations over F₂m. Performance is
not optimal and it doesn't provide protection against timing
attacks. The m parameter is implicitly derived from the irreducible
polynomial where applicable.
- 1 type
- 10 values
- Packagecrypton-1.0.4
- Exports11
- LanguageHaskell2010
- LicenceBSD-3-Clause
- SourceF2m.hs
Addition over F₂m. This is just a synonym of xor.
Multiplication over F₂m.
This function is undefined for negative arguments, because their bit representation is platform-dependent. Zero modulus is also prohibited.
Squaring over F₂m without reduction by modulo.
The implementation utilizes the fact that for binary polynomial S(x) we have S(x)^2 = S(x^2). In other words, insert a zero bit between every bits of argument: 1101 -> 1010001.
This function is undefined for negative arguments, because their bit representation is platform-dependent.
Squaring over F₂m.
This function is undefined for negative arguments, because their bit representation is platform-dependent. Zero modulus is also prohibited.
Exponentiation in F₂m by computing a^b mod fx.
This implements an exponentiation by squaring based solution. It inherits the same restrictions as squareF2m. Negative exponents are disallowed.
Reduction by modulo over F₂m.
This function is undefined for negative arguments, because their bit representation is platform-dependent. Zero modulus is also prohibited.
Square rooot in F₂m.
We exploit the fact that a^(2^m) = a, or in particular, a^(2^m - 1) = 1
from a classical result by Lagrange. Thus the square root is simply a^(2^(m
- 1)).
Modular inversion over F₂m.
If n doesn't have an inverse, Nothing is returned.
This function is undefined for negative arguments, because their bit representation is platform-dependent. Zero modulus is also prohibited.
Division over F₂m. If the dividend doesn't have an inverse it returns Nothing.
This function is undefined for negative arguments, because their bit representation is platform-dependent. Zero modulus is also prohibited.
Solve a quadratic equation of the form x^2 + x = a in F₂m.