Source: https://nvlpubs.nist.gov/nistpubs/Legacy/CS/cs161-49.pdf