实验三DSA数字签名算法_第1页
实验三DSA数字签名算法_第2页
实验三DSA数字签名算法_第3页
实验三DSA数字签名算法_第4页
实验三DSA数字签名算法_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验三DSA数字签名算法名字:学位:学院:信息工程学院指导老师:郑明辉1. DSA算法的原理数字签名是通过公开行信道传输数据的安全保障,以能够实现数据公开、公正、不可否认等特征的方式,仅可以公开的密钥、加密签名算法。 国际认可的公钥签名算法主要是RSA算法、ElGAMAL算法或其变形的签名算法。 DSA(Digite Signature Arithmotic )是Schnore和ElGamal算法的变形例。美国国家标准技术研究所(nist )于1994年5月19日公布了数字签名标准的(DSS )。 标准采用的算法为DSA,密钥长度为5121024位。 密钥长度越长,签名速度越慢,制约运算速度的

2、要素是数量的模拟指数运算。2. DSA签名的参数参数描述:数字信号算法(DSA )是Schnorr和ElGamal签名算法的变种,美国NIST作为DSS (数字信号标准)。 以下参数适用于该算法:p:L bits长度的素数。 l是64的倍数,范围从512到1024问: p-1的160比特的素因数g:g=h(p-1)/q) mod p、h满足h p - 1、h(p-1)/q) mod p 1x:x q,x是秘密密钥y:y=gx mod p,(p、q、g、y )是公开密钥h (x ) :一条散列函数。 在DSS中选择安全散列分配(sha )。虽然p、q、g可以由一系列用户共享,但是在实际应用中,使

3、用公共模块可能会带来一定威胁。 签名和验证协议如下:1 .产生p随机数k和k q2 .计算2.pr=(gkmodp)modqs=(k(-1) (H(m) xr) mod q签名的结果是(m,r,s )。3 .在验证时计算w=s(-1)mod qu1=(H(m ) * w ) mod qu2=(r * w ) mod qv=(gu1 * yu2 ) mod p ) mod q如果v=r,则签名被视为有效。DSA基于整数有限域离散对数问题,其安全性与RSA几乎相同。 DSA的一个重要特征是公开了两个素数,在使用别人的p和q时,即使不知道私钥也能确认是否随机发生,做了手脚。 RSA算法是不行的。3

4、.源代码的说明#包括 STD afx.h #include#include#include BigInt.h #include sha1.h #include time.h int shas1(const unsigned int x,unsigned char digest20 )举止SHA1_CTX context;无符号char缓冲器 16384 ; digest20;/FILE *file;SHA1Init(context )sha1更新(context,buffer,1 )SHA1Final(digest、context )返回0;以下CBigInt sha(CBigInt y )举

5、止SHA1_CTX context;CBigInt X;未指定图片缓冲器 16384 、digest20;CString str;char *t=ABCDEF ;if (y.m _ nlength=1) (y.m _ ul value 0=0) )举止str=0;X.Mov(0)返回x;以下str=;PS;char ch=0;str.Insert(0,ch )x.PS (y )while (x.m _ ul value x.m _ nlength-1 0)举止a=X.Mod(16 )ch=ta;str.Insert(0,ch )X.Mov(X.Div(16 ) );以下int i=0;whil

6、e (stri0)I;for (a=i,i=0; i=0)(digesti=9) )k=digesti;/else if (digest I =a ) (digest I =f ) ) k=digest I -55;/else if (digest I =a ) (digest I =f ) ) k=digest I -87;/else k=0;X.Mov(X.Add(k ) );以下返回x;以下cbigintmakeranumber (unsigned intlen )举止srand (时间(空) );CBigInt X;X.m_nLength=(len 31)/32;/X.Mov(0)fo

7、r (unsigned int j=0; j0 )举止if (y%2=0) q.Mov(q.Mul(q ) ); y /=2; 以下else p.Mov(p.Mul(q ) ); y -=1; 以下以下返回p;以下CBigInt pow3(CBigInt x,CBigInt y,CBigInt m )举止CBigInt p,t;p.Mov(1)t.Mov(0)while (y.Cmp(t)0)举止if (y.m_ulValue00x1=0)x.Mov(x.Mul(x ) ); x.Mov(x.Mod(m ) ); x.Mov(x.Div(2) ); 以下else p.Mov(p.Mul(x ) ); p.Mov(p.Mo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论