Source: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf