ElGamal Crypotography
Each user generates his key:
-Choose a secret key : 1<XA<q-1
-Compute their public key: {q,a,YA=a^XA mod q}
ElGamal Message Exchange
- B encrypts and sends message to A by computing
-Message M in range 0<= M<= q-1
-Choose random integer k with 1<=k<=q-1
-Compute one-time key K=YA^k mod q
-Encrypt M as a pair of integers (C1, C2):
C1 =a^k mod q; C2=K*M mod q
- A then recovers message by
-Recovering key K as K=C1^XA mod q
-Computing M as M =C2*K^-1 mod q
- A unique k must be used each time
otherwise result is insecure
说了这么多,下面举个例子:
Use field GF(19)q=19 and a=10
A computes key:
A chooses XAxs