资源描述:
《实验三DSA数字签名算法.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验三DSA数字签名算法姓名:学号:学院:信息工程学院指导老师:郑明辉1.DSA算法原理数字签名是数据在公开行信道中传输的安全保障,能够实现数据的公开、公正、不可抵赖等特点的方法,只能公开的密钥、密码签名算法。国际供认的公开密钥签字算法主要有RSA算法、ElGAMAL算法或者其变形的签名算法。DSA(DigiteSignatureArithmotic)是Schnore和ElGamal算法的变型。美国国家标准技术研究所(NIST)1994年5月19日公布了数字签名标准的(DSS),标准采用的算法便是DSA,密钥长度为512~1024位。密钥长度愈长,签名速度愈慢,制约运算速度的
2、只要因素是大数的模指数运算。2.DSA签名中的参数参数描述:DigitalSignatureAlgorithm(DSA)是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignatureStandard)。算法中应用了下述参数: p:Lbits长的素数。L是64的倍数,范围是512到1024; q:p-1的160bits的素因子; g:g=h^((p-1)/q)modp,h满足h1; x:x3、Hash函数。DSS中选用SHA(SecureHashAlgorithm)。 p,q,g可由一组用户共享,但在实际应用中,使用公共模数可能会带来一定的威胁。签名及验证协议如下: 1.P产生随机数k,k4、。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却做不到。3.源码描述#include"stdafx.h"#include#include#include"BigInt.h"#include"sha1.h"#include"time.h"intshas1(constunsignedintx[],unsignedchardigest[20]){SHA1_CTXcontext;unsignedcharbuffer[16384];//,digest[20]
5、;//FILE*file;SHA1Init(&context);SHA1Update(&context,buffer,1);SHA1Final(digest,&context);return0;}CBigIntsha(CBigInty){SHA1_CTXcontext;CBigIntX;unsignedcharbuffer[16384],digest[20];CStringstr;char*t="ABCDEF";if((y.m_nLength==1)&&(y.m_ulValue[0]==0)){str="0";X.Mov(0);returnX;}str="";inta;cha
6、rch=' ';str.Insert(0,ch);X.Mov(y);while(X.m_ulValue[X.m_nLength-1]>0){a=X.Mod(16);ch=t[a];str.Insert(0,ch);X.Mov(X.Div(16));}inti=0;while(str[i]>0)i++;for(a=i,i=0;i