第十八章 DSA / 18.1 DSA简介

       Digital Signature Algorithm (DSA)算法是一种公钥算法。其密钥由如下部分组成:

       1p

              一个大素数,长度为L(64的整数倍)比特。

       2q

              一个160比特素数。

       3g

              g=h(p-1)/q mod p,其中h小于p-1

       4x

              小于q

       5) y

              y=gx mod p

       其中x为私钥,y为公钥。pqg是公开信息(openssl中称为密钥参数)

       DSA签名包括两部分,如下:

              r = (gk mod p) mod q

s = (k-1 (H(m) + xr)) mod q

其中,H(m)为摘要算法;

       DSA验签如下:

              w = s-1 mod q

u1 = (H(m) * w) mod q

u2 = (rw) mod q

v = ((gu1 * yu2) mod p) mod q

              如果v=r,则验证通过。