RSA and ElGamal implementation using Charm-Crypto
- RSA Cryptosystem (Based on Factorization Problem)
- Select large primes p, q such that p≠ q
- Calculate n = pq and Ø(n) = (p-1)(q-1)
- Select
b
such that gcd(Ø(n),b) = 1 and 1<b< Ø(n) - Compute
d
such that bd ≅ 1(mod Ø(n)) - Public key (n, b) and private key (d,n)
- Encryption for message
m
: c = Ek(m) = mb(mod n) - Decryption for cipher
c
: Dk(c) = cd(mod n)
- ElGamal Cryptosystem (Based on Discrete Logarithm)
- p: Prime, (Zp*, . ) and α ∈ Zp* primitive element.
- {(p, α, a, ß): αa ≅ ß (mod p)}
- Public Key: (p, α, ß) and Private Key: a
- Encryption for message
m
: Select random number r ∈ Zp-1*
c = Ek(m) = (y1,y2) where y1 = αr (mod p) and y2 = m. ßr(mod p) - Decryption for cipher
c
: Dk(c) = y2.(y1a)-1