Source: http://lim.univ-reunion.fr/staff/epayet/Teaching/Securite/TP_crypto_M1info.pdf