ElGamal加密是由Taher ElGamal创造的,更常用的名称是ElGamal加密系统。这里需要介绍的三个方面的内容:ElGamal密钥生成、ElGamal加密和ElGamal解密。
1.ElGamal密钥生成
这包括如下步骤:
(1)选择一个较大的质数,称为P。这是加密密钥或公钥的第一部分。
(2)选择解密密钥或者私钥D。
(3)选择加密密钥或者公钥的第二部分E1。
(4)加密密钥或公钥的第三部分E2是这样计算所得的:
E
2
=
E
1
D
m
o
d
P
E2=E1^Dmod P
E2=E1DmodP。
(5)公钥为(E1,E2,P),私钥为D。
2.ElGamal密钥加密
这包括如下步骤:
(1)选择一个随机整数R。
(2)计算密文的第一部分
C
1
=
E
1
R
m
o
d
P
C1=E1^Rmod P
C1=E1RmodP。
(3)计算密文的第二部分
C
2
=
(
P
T
×
E
2
R
)
m
o
d
P
C2=(PT\times E2^R)mod P
C2=(PT×E2R)modP,其中PT为明文。
(4)最后的密文是(C1,C2)。
3.ElGamal密钥解密
这包括如下步骤:使用公式 P T = ( C 2 × ( C 1 D ) − 1 ) m o d P PT=(C2\times (C1^D)^{-1})mod P PT=(C2×(C1D)−1)modP计算明文PT。