DSA数字签名
1994年12月美国国家标准和技术研究所(NIST,National
Institute of Standard and Technology)正式颁布了数字签名标
准DSS(Digital Signature Standard),它是在ElGamal和Schorr
数字签名方案的基础上设计的。DSS最初建议使用p为512比
特的素数,q为160比特的素数,后来在众多的批评下,NIST
将DSS的密钥p从原来的512比特增加到介于512比特到1024比
特之间。当p选为512比特的素数时,ElGamal签名的长度为
1024比特,而DSS中通过160比特的素数q可将签名的长度降
低为320比特,这就大大地减少了存储空间和传输带宽。由于
DSS具有较大的兼容性和适用性,因此DSS将得到广泛的应用。
数字签名标准DSS中的算法常称为DSA(Digital Signature
Algorithm)。
DSA数字签名算法(初始化)
DSA数字签名算法(签名)
DSA数字签名算法(验证)
DSA数字签名算法(正确性)
DSA数字签名算法(举例)
C语言实例
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int xy[22];
int myPow(int a, int b, int m) {
int res = 1;
a %= m;
while (b != 0) {
if ((b & 1) == 1)
res = (res * a) % m;
a