ElGamal数字签名方案的过程和RSA签名方案相似,但采用的参数和签名函数不同。回顾ElGamal加密算法,密钥参数中{ α , β , p }为公钥, d 为私钥。Bob签名的计算过程如下。选择一个临时的随机密钥 w ,满足 w <= p -2,且 w 和 p -1的最大公约数为1。计算:
r = α w mod p
以及
s =( x - dr ) w -1 mod p -1。
上述计算中的{ r , s }即为签名的结果。
Alice利用公钥参数对签名进行验证,其过程如下。计算:
t = β r × r s mod p
如果 t = α x mod p 则验证通过;否则验证失败。
ElGamal签名方案的证明过程不像RSA方案那么直接,需要利用数论中的费马小定理,在这里不做叙述。一般情况下,选择ElGamal数字签名算法参数 p 的长度为1024或更大。由于输出为{ r , s },因此该算法的签名长度是原文摘要长度的三倍。