The RSA algorithm is fairly simple and straightforward, which has perhaps added to its widespread adoption. Find two large prime numbers, *p* and *q* and multiply these together to give *N*. Therefore,

*N = p * q*

Select a number e which is less than *N* and prime to (*p – 1*) * (*q – 1*), so that e and (*p – 1*) * (*q – 1*) have no common factors. Select another number *d*, where (*ed – 1*) is divisible by (*p -1*) * (*q – 1*). The public key is (*N, e*) and the private key is (*N, d*), where *e* is the public exponent and *d* is the private exponent. Primes *p* and *q* are no longer needed but cannot be disclosed. It is standard to refer to the bit length of the modulus *N* as the size of the RSA key.

In order to successfully encrypt a message *m*, create the ciphertext *c* (with *e* and *N* as defined previously) such that

*c = me modN*

The cipher text *c* may now be sent securely. It may be decrypted by calculating

*m = cd modN*

From this it could be seen that if factors *p* and *q* could be determined from *N*, it would be possible to obtain *d*. Therefore, for RSA to be considered secure it is necessary that the efficient factoring of sufficiently large integers is not possible.