



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三DSA数字签名算法姓名:学号:学院:信息工程学院指导老师:郑明辉DSA算法原理数字签名是数据在公开行信道中传输的平安保障,能够实现数据的公开、公正、不可抵赖等特点的方法,只能公开的密钥、密码签名算法。国际供认的公开密钥签字算法主要有RSA算法、ElGAMAL算法或者其变形的签名算法。DSA(DigiteSignatureArithmotic)是Schnore和ElGamal算法的变型。美国国家标准技术研究所(NIST)1994年5月19日公布了数字签名标准的(DSS),标准采用的算法便是DSA,密钥长度为512~1024位。密钥长度愈长,签名速度愈慢,制约运算速度的只要因素是大数的模指数运算。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<p-1,h^((p-1)/q)modp>1;x:x<q,x为私钥;y:y=g^xmodp,(p,q,g,y)为公钥;H(x):One-WayHash函数。DSS中选用SHA(SecureHashAlgorithm)。p,q,g可由一组用户共享,但在实际应用中,使用公共模数可能会带来一定的威胁。签名及验证协议如下:1.P产生随机数k,k<q;2.P计算r=(g^kmodp)modqs=(k^(-1)(H(m)+xr))modq签名结果是(m,r,s)。3.验证时计算w=s^(-1)modqu1=(H(m)*w)modqu2=(r*w)modqv=((g^u1*y^u2)modp)modq假设v=r,那么认为签名有效。DSA是基于整数有限域离散对数难题的,其平安性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却做不到。源码描述#include"stdafx.h"#include<string.h> #include<stdio.h>#include"BigInt.h"#include"sha1.h"#include"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;CBigIntX; 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='\0'; 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<a;i++) buffer[i]=str[i]; for(i=a;i<64;i++)buffer[i]='\0';SHA1Init(&context); SHA1Update(&context,buffer,1);SHA1Final(digest,&context);intlen=str.GetLength(),k;X.Mov(0);for(i=0;i<20;i++){X.Mov(X.Mul(256));//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]-87;//elsek=0;X.Mov(X.Add(k));} returnX;}CBigIntmakerandnumber(unsignedintlen){ srand(time(NULL));CBigIntX; X.m_nLength=(len+31)/32;//X.Mov(0); for(unsignedintj=0;j<X.m_nLength;j++) { X.m_ulValue[j]=rand()*0x10000+rand(); } X.m_ulValue[0]=X.m_ulValue[0]|0x1; X.m_ulValue[j-1]=X.m_ulValue[j-1]|0x80000000; returnX;}CBigIntpow2(constintx,inty){ CBigIntp,q,t; p.Mov(1); q.Mov(x); while(y>0) { if(y%2==0){q.Mov(q.Mul(q));y/=2;} else{p.Mov(p.Mul(q));y-=1;} } returnp;}CBigIntpow3(CBigIntx,CBigInty,CBigIntm){ CBigIntp,t; p.Mov(1); t.Mov(0); while(y.Cmp(t)>0) { if(y.m_ulValue[0]&0x1==0) {x.Mov(x.Mul(x));x.Mov(x.Mod(m));
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 睡眠眼罩商业计划书
- 物联网运营工作计划范文
- 专注智能物流 喜迎“机器人革命”-专访广东嘉腾机器人自动化有限公
- 2025秋五年级上册语文(统编版)-【20 精彩极了和糟糕透了】作业课件
- 2025秋五年级上册语文(统编版)-【7 什么比猎豹的速度更快】作业课件
- 人造肉项目立项报告
- 人造肉项目企业运营管理(模板)
- 中国汽车摩擦材料项目投资计划书
- 户外拓客活动方案
- 网络货运对铁路物流企业的影响分析
- 虫害趋势的分析报告
- xx市汽车客运站平面布局设计-交通港站与枢纽课程设计
- 第11章蜗杆传动
- 2022-2023学年天津市和平区益中学校八年级(下)期末数学试卷(含解析)
- 肢端肥大症护理查房
- 基于STM32的四路抢答器课程设计说明书
- 《滑炒鸡丝》课程教学设计
- 大学生创新创业教程PPT完整全套教学课件
- 钢板卷管工实用工艺
- 外科学(2)知到章节答案智慧树2023年温州医科大学
- 火电厂典型危险点分析预控措施
评论
0/150
提交评论