If you read spy novels, you know about secret codes and how the hero “breaks” the code. Today secret codes have a much more common use. Most of the information that is stored on computers is coded to prevent unauthorized use. For example, your banking records, medical records, and school records are coded. Many cellular and cordless phones code the signal carrying your voice so that no one can listen in. Fortunately, because of recent advances in mathematics, today’s codes are “unbreakable.” Modern codes are based on a simple principle: Factoring is much harder than multiplying. For example, try multiplying 78 and 93; now try factoring 9991. It takes a long time to factor 9991 because it is a product of two primes 97 and 103, so to factor it, we have to find one of these primes. Now imagine trying to factor a number N that is the product of two primes *p* and *q*, each about 200 digits long. Even the fastest computers would take many millions of years to factor such a number! But the same computer would take less than a second to multiply two such numbers. This fact was used by Ron Rivest, Adi Shamir, and Leonard Adleman in the 1970s to devise the RSA code. Their code uses an extremely large number to encode a message but requires us to know its factors to decode it. As you can see, such a code is practically unbreakable. The RSA code is an example of a “public key encryption” code. In such codes, anyone can code a message using a publicly known procedure based on N, but to decode the message, they must know p and q, the factors of N. When the RSA code was developed, it was thought that a carefully selected 80-digit number would provide an unbreakable code. But interestingly, recent advances in the study of factoring have made much larger numbers necessary.

**Reference**

J. Stewart, L. Redlin, S. Watson *Algebra and Trigonometry* 3rd ed. Brooks/Cole 2012