RSA Encryption and Decryption

The RSA algorithm for public-key encryption was originated by Ron Rivest, Adi Shamir, and Leonard Adleman at MIT in 1977. Several similar methods had been proposed by earlier workers. The algorithm is based on the fact that it is far more difficult to factor a product of two primes than it is to multiply the two primes. Even the most powerful modern supercomputers would require more time than the age of the universe to factor a 400-digit number. (This might change if quantum computers ever become operational.)
In this Demonstration, the RSA algorithm is simulated using much smaller randomly chosen prime numbers, and both less than 100. The public key, which is made freely available to Alice and all other users, consists of the two numbers and an exponent , which is an odd integer relatively prime to between 1 and . (Here is Euler's totient function, the number of positive integers less than and relatively prime to .) For simplicity, take and also limit messages to three letters, such as XYZ. This constitutes the plaintext and is converted into an integer using, for example, ASCII codes. The corresponding ciphertext is computed using .
Only the recipient Bob has access to the private key, which is an integer exponent , a modular inverse to such that . To determine , a codebreaker would need to find the prime factors of , which, as noted earlier, is hopefully impossible. The plaintext is recovered using . The method works since (mod ), with application of Fermat's little theorem. The public and private keys can periodically be changed according to some prearranged schedule.
By inputting the public key and the three-part ciphertext , Bob can recover the plaintext message.


  • [Snapshot]
  • [Snapshot]
  • [Snapshot]
    • Share:

Embed Interactive Demonstration New!

Just copy and paste this snippet of JavaScript code into your website or blog to put the live Demonstration on your site. More details »

Files require Wolfram CDF Player or Mathematica.

Mathematica »
The #1 tool for creating Demonstrations
and anything technical.
Wolfram|Alpha »
Explore anything with the first
computational knowledge engine.
MathWorld »
The web's most extensive
mathematics resource.
Course Assistant Apps »
An app for every course—
right in the palm of your hand.
Wolfram Blog »
Read our views on math,
science, and technology.
Computable Document Format »
The format that makes Demonstrations
(and any information) easy to share and
interact with.
STEM Initiative »
Programs & resources for
educators, schools & students.
Computerbasedmath.org »
Join the initiative for modernizing
math education.
Step-by-Step Solutions »
Walk through homework problems one step at a time, with hints to help along the way.
Wolfram Problem Generator »
Unlimited random practice problems and answers with built-in step-by-step solutions. Practice online or make a printable study sheet.
Wolfram Language »
Knowledge-based programming for everyone.
Powered by Wolfram Mathematica © 2018 Wolfram Demonstrations Project & Contributors  |  Terms of Use  |  Privacy Policy  |  RSS Give us your feedback
Note: To run this Demonstration you need Mathematica 7+ or the free Mathematica Player 7EX
Download or upgrade to Mathematica Player 7EX
I already have Mathematica Player or Mathematica 7+