Based on Descrete Logarithm Problem(DLP)离散对数问题
密钥产生
1.产生一个大的随机素数p
2.找出Zp的一个生成元g
3.选择一个随机整数a且0 <= a <= p-1
4.计算β=gamod p
5.得到公钥(p,g,β),私钥a
加密
1.选择一个随机整数k且0 <= k <= p-1
2.E(m,k) = (c1,c2)
3.c1=gk mod p, c2=m(β)k mod p
解密
1.D(a,c1,c2) = m
2.m=c2(c1a)-1mod p
举例
1.Bob选了一个素数97
2.Bob找出Z97的一个生成元5 (gcd(5,97)=1)
3.Bob选了一个整数58作为私钥
4.Bob计算出β = 558mod 97
= ((((52)2)2)2)2·(((52)2)2)2·((52)2)2·52 mod 97
= 35·36·6·25 mod 97
= 44 mod 97
5.Bob发布公钥(p,g,β)=(97,5,44),保留私钥a=58
6.Alice想要加密明文m=3发送给Bob
7.Alice选择k=36
c1=536mod 97 c2=3*4436mod 97
=50 mod 97 =31mod 97
发送(c1,c2)给Bob
8.Bob计算c1-1=50-1mod 97=33, c1-a=3358mod 97=22
得明文m=c1-ac2=22·31mod 97=3