

ElGamal是1985年由T. EIGamal提出的一个著名的公钥密码算法
该算法既能用于数据加密也能用于数字签名
其安全性是依赖于计算有限域上离散对数这一难题
1. 密钥产生
任选一个大素数p,使得p-1有大素因子,g是模p的一个本原根,公开p与g。
使用者任选一私钥x,x∈[0, p-1]
计算公钥 y=gx mod p
公开公钥: y, p, g
保密私钥: x
2. 加密过程
对于明文m,选取一个r,r∈[0, p-1]
计算 c1=gr mod p
c2=m*yr mod p
则密文为 {c1,c2}
3. 解密过程
先计算 w=(c1x)-1 mpd p
再计算出明文 m=c2*wmod p
4. 签名过程
假设对消息m签名,任选一个随机数k,使k∈[0, p-1]
计算 r=gk modp
s=k-1(m-x*r)mod(p-1)
签名为{r,s}
(5) 签名验证过程
yr*rs=gm(mod p)
需要说明的是,为了避免选择密文攻击,ElGamal是对消息m的hash值进行签名,而不是对m签名
与RSA方法比较,ElGamal方法具有以下优点:(1) 系统不需要保存秘密参数,所有的系统参数均可公开;(2) 同一个明文在不同的时间由相同加密者加密会产生不同的密文
但ElGamal方法的计算复杂度比RSA方法要大。
| 各省软考办 | ||||||||||