实验三DSA数字签名算法

实验三DSA数字签名算法

ID:39136414

大小:759.51 KB

页数:7页

时间:2019-06-25

实验三DSA数字签名算法_第1页
实验三DSA数字签名算法_第2页
实验三DSA数字签名算法_第3页
实验三DSA数字签名算法_第4页
实验三DSA数字签名算法_第5页
资源描述:

《实验三DSA数字签名算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验三DSA数字签名算法姓名:学号:学院:信息工程学院指导老师:郑明辉1.DSA算法原理数字签名是数据在公开行信道中传输的安全保障,能够实现数据的公开、公正、不可抵赖等特点的方法,只能公开的密钥、密码签名算法。国际供认的公开密钥签字算法主要有RSA算法、ElGAMAL算法或者其变形的签名算法。DSA(DigiteSignatureArithmotic)是Schnore和ElGamal算法的变型。美国国家标准技术研究所(NIST)1994年5月19日公布了数字签名标准的(DSS),标准采用的算法便是DSA,密钥长度为5

2、12~1024位。密钥长度愈长,签名速度愈慢,制约运算速度的只要因素是大数的模指数运算。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满足h

3、odp>1;  x:x

4、modq  u2=(r*w)modq  v=((g^u1*y^u2)modp)modq  若v=r,则认为签名有效。DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却做不到。3.源码描述#include"stdafx.h"#include#include#include"BigInt.h"#include"sha1.h"#inc

5、lude"time.h"intshas1(constunsignedintx[],unsignedchardigest[20]){SHA1_CTXcontext;unsignedcharbuffer[16384];//,digest[20];//FILE*file;SHA1Init(&context);SHA1Update(&context,buffer,1);SHA1Final(digest,&context);return0;}CBigIntsha(CBigInty){SHA1_CTXcontext;CBigIn

6、tX;unsignedcharbuffer[16384],digest[20];CStringstr;char*t="0123456789ABCDEF";if((y.m_nLength==1)&&(y.m_ulValue[0]==0)){str="0";X.Mov(0);returnX;}str="";inta;charch='';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

7、(0,ch);X.Mov(X.Div(16));}inti=0;while(str[i]>0)i++;for(a=i,i=0;i

8、56));//if((digest[i]>='0')&&(digest[i]<='9'))k=digest[i];//elseif((digest[i]>='A')&&(digest[i]<='F'))k=digest[i]-55;//elseif((digest[i]>='a')&&(digest[i]<='f'))k=digest[i]-8

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。