EIGamal公钥密码体制
简介
ElGamal是1985年由T. EIGamal提出的一个著名的公钥密码算法
该算法既能用于数据加密也能用于数字签名
其安全性是依赖于计算有限域上离散对数这一难题
密钥产生
任选一个大素数p,使得p-1有大素因子,g是模p的一个本原根,公开p与g。
使用者任选一私钥x,x∈[0, p-1]
计算公钥 y=gx mod p
公开公钥: y, p, g
保密私钥: x
本原根简介:
如果a的阶m等于φ(n),则称a为n的本原根(生成元)。如果a是n的本原根,则a, a2, …, aφ(n)在mod n下互不相同且都与n互素。
特别地,如果a是素数p的本原根,则a, a2, …, ap-1在 mod p下都不相同。
加密
欲加密明文消息M,随机选一与p-1互素的整数k,计算
C1=g^k mod p,
C2=(y^k)*M mod p,
密文为C=(C1,C2)
解密
先计算 w=(c1x)-1 mpd p再计算出明文 m=c2*wmod p
也可以
M=C2/(C1^x)modp
这是因为:
C2/(C1^x)modp=((y^k)M)/g^k* xmod p=((y^k)M)/y^k mod p=M mod p
例子
假设Alice采用了EIGamal密码体制,并选择素数p&#