




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 火力发电厂热经济性评价考核试卷
- 能源零售商的市场分析能力考核试卷
- 矿山开采对空气质量影响评估考核试卷
- 吉林省长春市朝阳区新朝阳实验校2025届初三寒假自主学习综合练习英语试题含答案
- 苏州工业职业技术学院《生物仪器分析》2023-2024学年第二学期期末试卷
- 宁夏工业职业学院《信号与系统》2023-2024学年第二学期期末试卷
- 上海戏剧学院《大学生写作》2023-2024学年第二学期期末试卷
- 江西省宁师中学2025年高三下学期第一次教学诊断物理试题含解析
- 江西农业大学南昌商学院《施工组织》2023-2024学年第二学期期末试卷
- 天津外国语大学《药学细胞生物学实验》2023-2024学年第二学期期末试卷
- 2025-2030中国设施农业行业市场发展分析及竞争格局与投资前景研究报告
- 昌乐县南寨水库防御洪水方案
- 2024-2025学年教科版科学一年级下册 1.6.哪个流动得快 教学课件
- 第九章 人的食物来自环境【单元测试卷】(原卷版)
- 宿舍教育班会
- 高中家长会:高二下学期期中考试家长会课件
- 煤矿反“三违”课件
- 生态安全主题班会课件
- 消防气防培训
- 2025年湖南省各市州农电服务有限公司招聘笔试参考题库含答案解析
- 突发性听觉丧失的护理
评论
0/150
提交评论