RSA
Rivest–Shamir–Adleman
Last updated
Rivest–Shamir–Adleman
Last updated
Generate two large random primes and . Compute the modulus . Compute . Choose a public exponent s.t. (usually we use ). Publish the modulus and the public exponent as the public key .
Choose a plaintext to be sent. Use the public key to encrypt :
In Python, this step is computed by c = pow(m, e, N)
. Send the ciphertext to Alice.
Compute the private component and decrypt :
In Python, this step is computed by m = pow(c, d, N)
.
Today, RSA is often not the preferred way of doing a key exchange, and it is being used less and less in protocols in favor of Elliptic Curve Diffie-Hellman (ECDH). This is mostly due to historical reasons (many vulnerabilities have been discovered with RSA implementations and standards) and the attractiveness of the smaller parameter sizes offered by ECDH.