RSA ALGORITHM
Study and implementation of RSA Algorithm using C programming language.
In a classic cryptosystem in order to make sure that nobody, except the intended recipient, deciphers the message, the people involved had to strive to keep the key secret. In a public-key cryptosystem. The public key cryptography solves one of the most vexing problems of all prior cryptography: the necessity of establishing a secure channel for the exchange of the key.
RSA algorithm is a public-key cryptosystem defined by Rivest, Shamir, and Adleman. The scheme is as follows:
Let p and q be distinct large primes and let n be their product. Assume that we also computed two integers, d (for decryption) and e (for encryption) such that
d * e 1 (mod ø(n))
where ø(n) is the number of positive integers smaller than n that have no factor except 1 in common with n
The integers n and e are made public, while p, q, and d are kept secret.
Let m be the message to be sent, where m is a positive integer less than and relatively prime to n. A plaintext message is easily converted to a number by using either the alphabet position of each letter (a=01, b=02, ..., z=26) or using the standard ASCII table. If necessary (so that m<n), the message can be broken into several blocks.
The encoder computes and sends the number
m' = m^e mod n
To decode, we simply compute
e^d mod n
Now, since both n and e are public, the question arises: can we compute from them d? The answer: it is possible, if n is factored into prime numbers.
The security of RSA depends on the fact that it takes an impractical amount of time to factor large numbers.
|