版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验三 DSA数字签名算法姓 名: 学 号: 学 院: 信息工程学院 指导老师: 郑明辉 1. DSA算法原理 数字签名是数据在公开行信道中传输的安全保障,能够实现数据的公开、公正、不可抵赖等特点的方法,只能公开的密钥、密码签名算法。国际供认的公开密钥签字算法主要有RSA算法、ElGAMAL算法或者其变形的签名算法。DSA(Digite Signature Arithmotic )是Schnore和ElGamal算法的变型。美国国家标准技术研究所(NIST)1994年5月19日公布了数字签名标准的(DSS),标准采用的算法便是DSA,密钥长度为5121024位。密钥长度愈长,签名速度愈慢,制约
2、运算速度的只要因素是大数的模指数运算。2. DSA签名中的参数参数描述:Digital Signature Algorithm (DSA)是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignature Standard)。算法中应用了下述参数: p:L bits长的素数。L是64的倍数,范围是512到1024; q:p - 1的160bits的素因子; g:g = h(p-1)/q) mod p,h满足h < p - 1, h(p-1)/q) mod p > 1; x:x < q,x为私钥 ; y:y = gx mod p ,( p
3、, q, g, y )为公钥; H( x ):One-Way Hash函数。DSS中选用SHA( Secure Hash Algorithm )。 p, q, g可由一组用户共享,但在实际应用中,使用公共模数可能会带来一定的威胁。签名及验证协议如下: 1. P产生随机数k,k < q; 2. P计算 r = ( gk mod p ) mod q s = ( k(-1) (H(m) + xr) mod q 签名结果是( m, r, s )。 3. 验证时计算 w = s(-1)mod q u1 = ( H( m ) * w ) mod q u2 = ( r * w ) mod q v =
4、( gu1 * yu2 ) mod p ) mod q 若v = r,则认为签名有效。 DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却做不到。3. 源码描述 #include "stdafx.h"#include <string.h>#include <stdio.h>#include "BigInt.h"#include "sha1.h"#include
5、 "time.h"int shas1(const unsigned int x, unsigned char digest20)SHA1_CTX context;unsigned char buffer16384; /,digest20;/FILE *file; SHA1Init(&context);SHA1Update(&context, buffer, 1); SHA1Final(digest, &context); return 0;CBigInt sha(CBigInt y)SHA1_CTX context; CBigInt X;unsign
6、ed char buffer16384,digest20; CString str;char *t="0123456789ABCDEF"if(y.m_nLength=1)&&(y.m_ulValue0=0)str="0"X.Mov(0);return X;str="" int a; char ch='0'str.Insert(0,ch); X.Mov(y); while(X.m_ulValueX.m_nLength-1>0) a=X.Mod(16); ch=ta; str.Insert(0,ch)
7、; X.Mov(X.Div(16); int i=0;while (stri>0) i+;for (a=i,i=0;i<a;i+)bufferi=stri;for (i=a;i<64;i+) bufferi='0' SHA1Init(&context);SHA1Update(&context, buffer, 1); SHA1Final(digest, &context); int len=str.GetLength(),k; X.Mov(0); for(i=0;i<20;i+) X.Mov(X.Mul(256);/ if(dig
8、esti>='0')&&(digesti<='9') k=digesti;/ else if(digesti>='A')&&(digesti<='F')k=digesti-55;/ else if(digesti>='a')&&(digesti<='f')k=digesti-87;/ else k=0; X.Mov(X.Add(k); return X;CBigInt makerandnumber( unsigned
9、 int len)srand(time(NULL); CBigInt X;X.m_nLength=(len+31)/32;/ X.Mov(0);for (unsigned int j=0;j<X.m_nLength;j+)X.m_ulValuej=rand()*0x10000+rand();X.m_ulValue0=X.m_ulValue0|0x1; X.m_ulValuej-1=X.m_ulValuej-1|0x80000000; return X;CBigInt pow2( const int x, int y)CBigInt p,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; return 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_ulValue0&0x1=0) x.Mov(x.Mul(x); x.Mov(x.Mod
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026氢燃料电池技术行业市场供需分析及投资评估规划分析研究报告
- 2026中国疏水透气膜在医疗防护装备中的性能测试分析报告
- 2026垂直农业与植物细胞培养设备协同发展机遇调研报告
- 2026中国被动式建筑技术推广与节能减排效果评估研究报告
- 2026中国液体化工物流行业环保合规与可持续发展战略报告
- 2026金融科技行业区块链技术应用深度探索及趋势
- 2026氢能储运技术突破与基础设施建设投资机会研究报告
- 2026产业园区运营模式创新与招商策略分析报告
- 2026宠物医疗缝合针市场空白与产品开发建议
- 2026工业互联网平台分析及智能制造转型投资机会报告
- 数字营销基础(第二版)课件 2.2数字营销技术
- 变电站操作票课件
- 产品封存仓储管理制度
- 北师大版七年级数学上册 专题03 数轴中的动点问题专训(原卷版+解析)
- 2025-2030中国十二胺行业市场现状供需分析及投资评估规划分析研究报告
- 矿山融资协议书范本
- 2025年注册环保工程师专业基础考试真题卷(附解析)
- 武汉市江岸区招聘社区公共服务干事175人历年高频重点模拟试卷提升(共500题附带答案详解)
- DG∕TJ 08-2183-2015 城市道路养护维修作业安全技术规程
- 2024年高中英语衡水体书法练字字帖
- 《围手术期健康教育》课件
评论
0/150
提交评论