Elgamal数字签名原理

来源:互联网 发布:linux重启tomcat命令 编辑:程序博客网 时间:2024/05/24 01:01

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.验证成功。

原创粉丝点击