Elgamal数字签名原理

Elgamal数字签名

         Elgamal数字签名主要也是利用离散对数的特性来实现签名,具体方式如下:

1. 选择一个大素数P、一个本原元G、一个随机整数d,d属于[2,p-2];

2. 生成β,β=G^d mod P;

3. 此时P、G、β就是公钥,记作Kpub;

4. Elgamal数字签名记作sig(x,k)=(r,s);  x是明文的摘要,k是临时私钥的随机值,记作Kpr,r,s是构成签名的两个整数;

5. 签名生成: r=G^k mod P; s=(x-dr)k^-1 mod (p-1);

6. 生成签名后,签名随明文一起发送给接收方;

7. 接收者收到消息后计算 t=β^r · r^s mod P

8. 验证:当t≡G^x modP 则该签名有效,数据未被篡改,反之则签名无效;

 

举例:B发消息给A,对消息使用Elgamal数字签名

    1. B选择素数P=29、本原元G=2、随机整数d=12,临时私钥k=5, 明文的摘要x=26;

         2.公钥β=G^d mod P → β=4096 mod 29 → β=7

         3.B将公钥(P=29,G=2,β=7)发给A

         4.计算签名,

     r=G^k mod P → r=2^5 mod 29 → r=3

           s=(x-dr)k^-1 mod (p-1) → s=(26-36)·17 mod 28 → s=26

    5.计算签名后将r=3、s=26、x=26发送给A

    6.A收到消息后,验证签名:

      t=β^r · r^smod P → t=343 X 2541865828329 mod 29 → t=22

      t≡G^x mod P  t mod P =22, G^x mod P =67108864mod 29 =22

    7.验证成功。

  • 5
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值