第十八章 DSA / 18.1 DSA简介

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

       1)p

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

       2)q

              一个160比特素数。

       3)g

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

       4)x

              小于q。

       5) y

              y=gx mod p。

       其中x为私钥,y为公钥。p、q和g是公开信息(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,则验证通过。