Most of the public-key cryptographic algorithms we use today rely on one of three hard mathematical problems: