ELGamal公钥密码

ELGamal公钥密码


Based on Descrete Logarithm Problem(DLP)离散对数问题

密钥产生

1.产生一个大的随机素数p
2.找出Zp的一个生成元g
3.选择一个随机整数a0 <= a <= p-1
4.计算β=gamod p
5.得到公钥(p,g,β),私钥a

加密

1.选择一个随机整数k0 <= 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

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值