A SageMath library for cryptographic functions, focusing on quadratic APN (Almost Perfect Nonlinear) functions.
The library provides tools for:
- converting between different representations of a function
- generating known infinite families of quadratic APN polynomials in univariate form
- deciding whether a function belongs to these families
- Conversion routines between univariate polynomial representation and other common representations of vectorial Boolean functions:
- truth tables
- quadratic matrices
- sequences
- bivariate forms
- trivariate forms
- Implementations of known infinite families of quadratic APN functions in univariate form
- Membership testing for identifying whether a function belongs to a known family
- SageMath 10.8 +
- Python 3.9 +
In a Sage terminal write
pip install sagemath-cryptographic-functions-library
Or from a regular terminal write
sage --pip install sagemath-cryptographic-functions-library
In a Sage terminal write
pip install git+https://github.com/hoeeg/SageMath_library_for_cryptographic_functions.git
Or in regular terminal write
sage --pip install git+https://github.com/hoeeg/SageMath_library_for_cryptographic_functions.git
The package can either be imported by module
from sagemath_cryptographic_functions_library import conversions, families, membership
families.family_4(3)
...
or by importing functions directly
from sagemath_cryptographic_functions_library import family_4
family_4(3)
...
You can try Sage online without installing anything locally from any of
For a local install, the Sage Installation Guide walks through the available options.
More about Sage or how to download it, can be found in its Documentation.
├── sagemath_cryptographic_functions_library/
│ ├── __init__.py
│ ├── conversions.py Conversions between representations
│ ├── families.py Known APN family constructions
│ ├── helpers.py Finite field utility functions
│ └── membership.py Membership testing algorithms
├── README.md This file
├── pyproject.toml Build configuration
└── LICENCE Copyright information