当前位置:文档之家› 实验三DSA数字签名算法

实验三DSA数字签名算法

实验三DSA数字签名算法
实验三DSA数字签名算法

实验三DSA数字签名算法

姓名:

学号:

学院:信息工程学院

指导老师:郑明辉

1.DSA算法原理

数字签名是数据在公开行信道中传输的安全保障,能够实现数据的公开、公正、不可抵赖等特点的方法,只能公开的密钥、密码签名算法。国际供认的公开密钥签字算法主要有RSA算法、ElGAMAL算法或者其变形的签名算法。

DSA(Digite Signature Arithmotic )是Schnore和ElGamal算法的变型。

美国国家标准技术研究所(NIST)1994年5月19日公布了数字签名标准的(DSS),标准采用的算法便是DSA,密钥长度为512~1024位。密钥长度愈长,签名速度愈慢,制约运算速度的只要因素是大数的模指数运算。

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 = g^x mod p ,( p, q, g, y )为公钥;

H( x ):One-Way Hash函数。DSS中选用SHA( Secure Hash Algorithm )。

p, q, g可由一组用户共享,但在实际应用中,使用公共模数可能会带来一定的威胁。签名及验证协议如下:

1. P产生随机数k,k < q;

2. P计算r = ( g^k 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 = (( g^u1 * y^u2 ) mod p ) mod q

若v = r,则认为签名有效。

DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。

DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却做不到。

3.源码描述

#include "stdafx.h"

#include

#include

#include "BigInt.h"

#include "sha1.h"

#include "time.h"

int shas1(const unsigned int x[], unsigned char digest[20]) {

SHA1_CTX context;

unsigned char buffer[16384]; //,digest[20];

// FILE *file;

SHA1Init(&context);

SHA1Update(&context, buffer, 1);

SHA1Final(digest, &context);

return 0;

}

CBigInt sha(CBigInt y)

{

SHA1_CTX context;

CBigInt X;

unsigned char buffer[16384],digest[20];

CString str;

char *t="0123456789ABCDEF";

if((y.m_nLength==1)&&(y.m_ulValue[0]==0))

{

str="0";

X.Mov(0);

return X;

}

str="";

int a;

char ch='\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));

}

int i=0;

while (str[i]>0)

i++;

for (a=i,i=0;i

buffer[i]=str[i];

for (i=a;i<64;i++) buffer[i]='\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((digest[i]>='0')&&(digest[i]<='9'))

k=digest[i];

// 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));

}

return X;

}

CBigInt makerandnumber( unsigned int len)

{

srand(time(NULL));

CBigInt X;

X.m_nLength=(len+31)/32;

// X.Mov(0);

for (unsigned int j=0;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;

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_ulValue[0]&0x1==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.Mod(m)); y.Mov(y.Sub(1)); } }

return p;

}

4.过程及结果截图描述

开始运行

选择512位密钥长度,点击公开参数,如下图

随便选择一个你要签名的文件,然后选择算法

点击数字签名

然后点击签名验证

RSA数字签名算法的模拟实现

RSA数字签名算法的模拟实现 摘要 本程序为简易版RSA算法加密解密过程的模拟实现。 程序分为加密和验证两部分。根据课上所学的MD5加密过程,以及RSA算法,本程序采用MD5算法,先对文件内容进行加密,得到文字摘要;再利用RSA算法的私钥,对文字摘要进行加密,得到数字签名。在验证部分,用RSA公钥对数字证书签名解密,得到文字摘要S1,再将需要验证的文档用公用的MD5算法处理,得到文字摘要S2,检验文字摘要S1与S2的一致性,从而断定原文是否被篡改。程序采用树形图对文件进行直观的显示管理。采用文本文档存储数字签名。 关键词:RSA MD5 文字摘要数字签名

Abstract This program is simple version of the RSA algorithm encryption and decryption process simulation. The procedures are divided into two parts, encryption and authentication. Lessons learned based on the MD5 encryption process, as well as RSA algorithm, the procedures used MD5 algorithm, first pairs contents of the file carry on encrypt, to obtain text abstract; re-use RSA algorithm's private key, encryption for text abstract, obtain the digital signature. In the verification part, with the RSA algorithm's public key pairs of digital certificate signature decryption, get text abstract S1, and then using a public MD5 algorithm encryption the document which need to be verify, to obtain text abstract S2, text the consistency of S1 and S2, thereby conclude that original text whether the been tampered with. Program uses the file tree intuitively display management the files. Adopt text document storage digital signatures. Key words:RSA MD5 Text abstract Digital signature

实验2 数据加密与数字签名

实验2 数据加密与与数字签名 一、实验目的与要求 体验各种密码体制的数据安全操作与数据安全软件以及了解我国的电子商务法律,并思考应如何做好电子商务的安全防范。 二、实验内容 1.运行C语言编程的加密程序。 2.PGP软件的下载与使用(对邮件以及文件加密)或Openssl软件。 3.非密码的安全技术。 4.各国发展电子商务的政策和制定的电子商务法律。 5.我国第一部电子签名法的内容与实施 三、实验软件 Windows XP ,IE 7 ,PGP软件,Openssl软件 四、实验步骤 (一)数据安全软件的使用 1.下载PGP与安装PGP(见附录) 2.利用PGP对邮件或磁盘文件进行加密 3.或者利用Openssl做如下操作:(用对称加密法对文件进行加密与解密) (1)生成源文件。用记事本创建一个文本文件,文件名为学号 (026h231f.txt),内容为学生的名字与学号,保存在c:\openssl\out32dll 的文件夹下。 (2)对源文件进行对称加密。输入命令:“openssl enc-des3-in 026h231f.txt-out out026h231f.des”回车后,在加密过程中系统会提示输入保护密码,输入密码后,再次确认(输入密码时屏幕无任何显示),系统在c:\openssl\out32dll目录下自动生成一个des3算法加密后的 out026h231f.des文件。 (3)查看加密的文件。输入命令:“type out026h23lf.des”,查看加密后的out026h231f.des文件的内容。

(4)对加密文件进行解密。输入命令“openssl enc-des3-d-in out026h231f.des -out new026h231f.txt”,并根据提示输入解密密码,对“outmane.txt”文件内容进行解码。 (5)比较解密后文件和源文件,输入命令“type new026h23lf.txt”,查看解密后的文件内容,判断是否与源文件026h23lf.txt的内容一致。(二)验证恺撒密码 1、请输入如下程序: #include main() { char c; while((c=getchar())!=’\n’) { if((c>=’a’&&c<=’z’)||(c>=’A’&&c<=’Z’)) { c=c+3; if(c>’z’&&c<=’z’+3||c>’Z’&&c<’Z’+3) c=c-26; } printf(“%c”,c);}} 2、验证是否是素数?的C语言程序 #include Main() { Int m,I,k; Scanf(“%d,&m”); K=aqrt(m); For(i=2;i<=k;i++) If(m%i==0)break;

数字签名算法原理

实验1-5 数字签名算法 DSS 一.实验目的 通过对数字签名算法DSS的实际操作,理解DSS的基本工作原理。 二.实验原理 以往的文件或书信可以通过亲笔签名来证明其真实性,而通过计算机网络传输的信息则通过数字签名技术实现其真实性的验证。 数字签名目前采用较多的是非对称加密技术,其实现原理简单的说,就是由发送方利用哈希算法对要传送的信息计算得到一个固定位数的消息摘要值,用发送者的私有密钥加密此消息的哈希值所产生的密文即数字签名。然后数字签名和消息一同发给接收方。接收方收到消息和数字签名后,用同样的哈希算法对消息进行计算得出新的哈希值,然后用发送者的公开密钥对数字签名解密,将解密后的结果与新的哈希值相比较,如相等则说明报文确实来自发送方。 下面我们以DSA(Digital Signature Algorithm)为例,介绍数字签名算法。DSA源于ElGamal和Schnorr签名算法,被美国NIST采纳作为DSS(Digital Signature Standard)数字签名标准。DSS数字签名算法的具体实现过程课参见图1-5。 比较 a 签名过程 b 验证过程 图1-5 DSS算法的实现过程 首先介绍DSS算法的主要参数: 1. 全局公开密钥分量  1)素数p, 2511

密码学实验-实验6 DSA数字签名算法

实验报告 一、实验目的 理解DSA算法原理 二、实验内容与设计思想 数字签名是一种以电子形式给消息签名的方法,是只有信息发送方才能进行的签名、信息发送方进行签名后将产生一段任何人都无法伪造的字符串,这段特殊的字符串同时也是对签名真实性的一种证明。电子信息在传输过程中,通过数字签名达到与传统手写签名相同的效果。 数字签名的实现原理简单地说,就是发送方利用hash算法对要传送的信息计算得到一个固定长度的消息摘要值,用发送方的私钥加密此消息的hash值所生成的密文即数字签名;然后将数字签名和消息一同发送给接收方。接收方收到消息和数字签名后,用同样的hash算法对消息进行计算,得到新的hash值,再用发送方的公钥对数字签名解密,将解密后的结果与新的hash值比较,如果相等则说明消息确实来自发送方。 DSA(Digital Signature Algorithm)源于ElGamal和Schnorr签名算法,1991年被美国NIST采纳为数字签名标准DSS(Digital Signature Standard),具体实现过程参见图1。 DSS安全性基于有限域求离散对数的困难性,算法描述如下: 1.密钥生成算法 1)选取160比特长的素数q和L比特长的素数p,满足q|(p?1),其中L≡0(mod 64)且 512≤L≤1024; 2)随机选取正整数h,11;q,p和g作为系统公开参数; 3)每个用户,随机选取正整数x,1≤x≤q?1,计算y=g x mod p;用户的公钥为y,私 钥为x。 2.签名算法 对于消息M,首先随机选取整数k,1≤k≤p?2,计算 r=(g k mod p) mod q s=(H(M)+xr)k?1mod q 则M的签名为(r,s),其中H为Hash函数SHA。 3.验证算法 接收方收到消息M′和签名(r′,s′)后,计算 e1=H(M′)s′?1mod q e2=r′s′?1mod q 验证等式 (g e1y e2mod p) mod q 如果v=r′成立,则说明消息确实来自发送方。

一、数字签名说明

附件2 中债综合业务平台客户端数字签名说明 可信代码数字签名证书可以保证您的软件是完整的、安全的(即可信任的)。为了保障您所下载的中债综合业务平台客户端安装程序未受病毒或木马的侵害,我公司已对安装程序及运行程序启用数字签名证书,并在版本安装和使用时进行明确的提示。(以下以“中债综合业务平台网上客户端”为例说明)。 一、数字签名说明 1.在已下载的安装程序上点击右键,选择“属性”;

2.选择“数字签名”标签,可看到该文件由中央国债登记结算有限责任签名。

3.点击“详细信息”,如软件未被改动,则证书的状态为“此数字签名正常”。 4.点击“查看证书”,可看到证书相关信息。

至此,可确认您下载的安装程序是可信任的,请放心进行安装和使用。 5.如果文件被非法篡改,分为两种情况 第一种:如果是WindowsXP系统,则在文件属性里,“数字签名”一栏仍显示该文件有签名,但详细信息里会提示“该数 字签名无效”,查看证书里会提示“没有验证对象的数字签名”。

第二种:如果是Windows7以上的系统,则在文件属性里看不到“数字签名”一栏. 一旦遇到以上这两种情况,请立即删除安装程序并重新下载,然后重复以上的验证步骤。 二、安装过程及客户端打开过程操作提示 1.Windows系统弹出的用户帐户控制窗口。 在Windows7及以上版本的系统中,如果将控制面板中的“用户帐户控制设置”设定为“始终通知”或“仅在程序尝试对我的计算机进行更改时通知我”,则会在运行安装程序时,弹出操作系统UAC提示对话框,此时点击“是”即可

继续进行安装操作。 2.打开客户端时可能遇到的安全警告。 在启动中债综合业务平台客户端时,如果用户的组策略—用户配置—管理模板—Windows组件—附件管理器中的高风险文件类型的包含列表是开启状态,会弹出安全警告对话框,此时点击“运行”即可继续启动打开客户端程序。

文档的数字签名实验

文档的数字签名实验2 数字签名能够用来证实文档创建者以及邮件发送者的可靠性,确保信息未受入侵而感染,内容没有在发送之后遭到秘密修改。但对一个文档签名并不代表对其加密。 数字签名如何工作 数字签名使用的名叫证书授权(CA)的受信第三方签发的数字证书。CA是一个运行着证书服务软件的服务器,例如包含在Windows 2000 Server和Widows Server 2003中的证书服务。 CA可以是在内部的,运行在公司本地局域网中的一台计算机上,或者它也可以是外部或者公共的CA,例如VeriSign、Thawte和其它公司所运行的。无论是哪种方式,CA都是用来验证和证明那些它所签发的数字证书的用户或计算机身份的。 数字证书是基于非对称式或公共密钥加密技术的。证书中班汉了用户的名称以及一个关联到用户用来签名文档的私钥的公共密钥,以及一串的数字、失效日期,还有CA的数字签名。 与早先版本的Office的兼容性 虽然早期版本的Office也支持数字签名,但它们使用的数字签名是不同格式的。Office 2007使用的是XMLDSig格式,这与之前的版本是无法兼容的。也就是说,如果一个用户使用的是Word 2003,他想打开一个在Office 2007中签名了的文档,那么这时就会出现一个对话框,提示这个用户,数字签名已经丢失了。 如何对Office 2007的文档添加数字签名 你可以对Word、Excel和PowerPoint 2007的文档以及Outlook 2007的电子邮件信息添加数字签名。 在Outlook中,你可以对个别的邮件信息使用数字签名,也可以让Outlook对所有发送出去的邮件使用数字签名。要个别地对邮件使用签名,先创建一封邮件信息,接着点击Office按钮后选择“属性”,点击选择“安全性”选项卡。在对话框中,钩选中“为此邮件添加数字签名”。

RSA算法和RSA数字签名算法的实现

RSA算法和RSA数字签名算法的实现

RSA算法和RSA数字签名算法的实现 摘要 RSA算法是一种公钥密码算法.实现RSA算法包括生成RSA密钥, 用RSA加密规则和解密规则处理数据。RSA数字签名算法利用RSA算法实现数字签名。本文详述了RSA算法的基本原理, RSA加密算法的实现以及如何利用RSA实现数字签名. 关键字 RSA算法, 数字签名, 公开密钥, 私人密钥, 加密, 解密 中图分类号 TP301 一、引言 随着网络技术的飞速发展,信息安全性已成为亟待解决的问题。公钥密码体制中,解密和加密密钥不同,解密和加密可分离,通信双方无须事先交换密钥就可建立起保密通信,较好地解决了传统密码体制在网络通信中出现的问题。另外,随着电子商务的发展,网络上资金的电子交换日益频繁,如何防止信息的伪造和欺骗也成为非常重要的问题。数字签名可以起到身份认证、核准数据完整性的作用。目前关于数字签名的研究主要集中基于公钥密码体制的数字签名。 公钥密码体制的特点是:为每个用户产生一对密钥(PK和SK);PK公开,SK保密;从PK推出SK是很困难的;A、B双方通信时,A通过任何途径取得B的公钥,用B的公钥加密信息。加密后的信息可通过任何不安全信道发送。B收到密文信息后,用自己私钥解密恢复出明文。 公钥密码体制已成为确保信息的安全性的关键技术。RSA公钥密码体制到目前为止还是一种认可为安全的体制。本文详述了RSA算法和用RSA算法实现数字签名的理论,以及它们在实际应用中的实现。 二、RSA算法和RSA数字签名算法的理论描述 1 RSA算法 RSA算法的理论基础是一种特殊的可逆模幂运算。 设n是两个不同奇素数p和q的积,即:n=pq, ?(n)=(p-1)(q-1)。 定义密钥空间 k={(n,p,q,d,e)|n=pq,p和q是素数,de≡1 mod ?(n),e 为随机整数}, 对每一个k=(n,p,q,d,e), 定义加密变换为E k(x)=x b mod n,x∈Z n; 解密变换为D k(x)=y a mod n,y∈Z n,Z n为整数集合。 公开n和b,保密p,q和a. 为证明加密变换E k和解密变换 D k满足D k(E k(x))=x,这里不加证明的引用下面两个定理: 定理1(Euler)对任意的a∈Z n *,有a?(n)≡1 mod n,其中 Z n *={x∈Z n |gcd(x,n)=1},?(·)表示Euler函数。 定理2 设p和q是两个不同的素数,n=pq, ?(n)=(p-1)(q-1),对任意的x∈Z n 及任意的非负整数k,有 x k?(n)+1≡x mod n. 现在来证明RSA算法的加密变换和解密变换的正确性。 证明:对于加密变换E k和解密变换D k。因为ab≡1 mod ?(n),所以可设

电子商务安全 数字签名实验报告

实验二数字签名 一实验目的 了解数字签名的原理,掌握数字签名的方法,掌握常用的数字签名技术,理解并掌握非对称加密算法的使用。 二实验内容 1 散列函数: 2 数字签名: 3 非对称加密算法的使用 三实验步骤 1 散列函数 (1)任意选择一个文件,分别使用MD5和SHA进行信息摘要实验,比较两种散列算法得到的结果。注意:这里要完成2种情况的实验。 (2)将文件中的内容进行分别进行不同的修改操作:增加、删除、修改,然后再使用两种散列算法进行信息摘要实验,比较两种算法在不同修改操作得到的结果,并进行分析。注意,这里要完成6种实验过程。

经过对内容的修改(即使是很小的改动例如一个标点符号),同种算法中得出的结果完全不相同,由此可见散列算法具有唯一性,从而保证了信息传输的安全性。而且摘要长度大小是一样的,这说明散列算法有定长性。 (3)字符串散列实验:使用自己的姓名和学号当作实验字符串,使用不同的散列算法获得信息摘要,并 2 数字签名实验 (1)选择一个文件,然后生成信息摘要。 (2)使用RAS算法进行数字签名。注意自己的私钥和公钥的保存。 (3)将原始文件和签名得到的文件传递给相邻同学,让其验证你的签名。注意,应告诉对方你的公钥, 四实验总结

2 总结信息摘要的特点,分析比较原始文件和信息摘要的关系。 (1)对于任何大小的数据,单向散列函数产生定长的信息摘要——定长性; (2)对任何不同的信息,通过单项散列函数产生的指纹都不同——唯一性; (3)已知信息摘要,不能通过推理或计算得到相应的数据——单向性。 信息摘要是根据原始文件通过单项散列函数得到的,并且原始文件一经改变,其信息摘要也会改变;而且无法从信息摘要产生相应的文件信息,这是由其单向性决定的。也就是说原始文件是信息摘要的基础,而信息摘要无法推断出原始文件,并且原始文件的改变也会改变信息摘要。 3 查找资料,掌握数字签名的原理和过程,画出数字签名的过程。 数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,授受方用发送方的公开密钥进行解密。这是一对多的关系:任何拥有发送方公开密钥的人都可以验证数字签名的正确性。在实际过程中,通常一个用户拥有两个密钥对,一个密钥对用来对数字签名进行加密解密,一个密钥对用来对私有密钥进行加密解密。下面介绍利用散列函数进行数字签名和验证的文件传输过程: (1)被发送文件用SHA编码加密产生128bit的数字摘要。 (2)发送方用自己的私用密钥对摘要再加密,这就形成了数字签名。 (3)将原文和加密的摘要同时传给对方。 (4)对方用发送方的公共密钥对摘要解密,同时对收到的文件用SHA编码加密产生又一摘要。 (5)将解密后的摘要和收到的文件在接收方重新加密产生的摘要相互对比。如两者一致,则说明传送过程中信息没有被破坏或篡改过。否则不然。 数字签名的过程如下图:

信息安全之电子签名技术的实现

滨江学院 课程论文 题目数字签名的发展 院系计算机系 专业软件工程(动画方向)学生姓名陈婷 学号20092358009 指导教师朱节中 职称副教授 二O一二年五月二十日

数字签名的发展 陈婷 南京信息工程大学滨江学院软件工程(动画方向),南京210044 摘要: 数字签名是电子商务安全的一个非常重要的分支。随着电子商务的发展,电子签名的使用越来越多。实现电子签名的技术手段有很多种,但比较成熟的、世界先进国家目前普遍使用的电子签名技术还是基于PKI的数字签名技术。 关键词: 数字签名信息安全电子商务 1引言 1.1 研究背景 在当今信息社会,计算机网络技术得到了突飞猛进的发展。计算机网络日益成为工业、农业和国防等领域的重要信息交换手段,并逐渐渗透到社会的各个领域。在现实生活中,人们常常需要进行身份鉴别、数据完整性认证和抗否认。身份鉴别允许我们确认一个人的身份;数据完整性认证则帮助我们识别消息的真伪、是否完整;抗否认则防止人们否认自己曾经做过的行为。随着无纸化办公的发展,计算机网络的安全越来越受到重视,防止信息被未经授权的泄漏、篡改和破坏等都是亟待解决的问题。在Internet上,数字签名作为一项重要的安全技术,在保证数据的保密性、完整性、可用性、真实性和可控性方面起着极为重要的作用。同时由于信息技术的发展及其在商业、金融、法律等部门的普及, 数字签名技术又面临着新的挑战。 1.2 开发意义 数字签名是实现电子交易安全的核心技术之一,它在实现身份认证、数字完整性、不可抵赖性等功 能方面都有重要应用。尤其是在密钥分配、电子银行、电子证券、电子商务和电子政务等许多领域有重要 的应用价值。 2相关技术介绍 2.1PKI/CA 技术的介绍 PKI 就是公开密钥基础设施。它是利用公开密钥技术所构建的,解决网络安全问题的,普遍适用的一种基础设施。公开密钥技术也就是利用非对称算法的技术。说PKI 是基础设施,就意味着它对信息网络的重要。PKI 通过延伸到用户本地的接口,为各种应用提供安全的服务,如认证、身份识别、数字签名、

数字签名课程设计

1.RSA数字签名的目的和意义 RSA公开密钥加密算法自20世纪70年代提出以来,已经得到了广泛认可和应用。发展至今,电子安全领域的各方面已经形成了较为完备的国际规范。RSA作为最重要的公开密钥算法,在各领域的应用数不胜数。RSA在硬件方面,以技术成熟的IC应用于各种消费类电子产品。 RSA在软件方面的应用,主要集中在Internet上。加密连接、数字签名和数字证书的核心算法广泛使用RSA。日常应用中,有比较著名的工具包Open SSL(SSL,Security Socket Layer,是一个安全传输协议,在Internet上进行数据保护和身份确认。Open SSL是一个开放源代码的实现了SSL及相关加密技术的软件包,由加拿大的Eric Yang 等发起编写的。Open SSL应用RSA实现签名和密钥交换,已经在各种操作系统得到非常广泛的应用。另外,家喻户晓的IE浏览器,自然也实现了SSL协议,集成了使用RSA技术的加密功能,结合MD5和SHA1,主要用于数字证书和数字签名,对于习惯于使用网上购物和网上银行的用户来说,几乎天天都在使用RSA技术。 RSA更出现在要求高度安全稳定的企业级商务应用中。在当今的企业级商务应用中,不得不提及使用最广泛的平台j2ee。事实上,在j2se的标准库中,就为安全和加密服务提供了两组API:JCA和JCE。JCA (Java Cryptography Architecture)提供基本的加密框架,如证书、数字签名、报文摘要和密钥对产生器;JCA由几个实现了基本的加密技术功能的类和接口组成,其中最主要的是java.security包,此软件包包含的是一组核心的类和接口,Java中数字签名的方法就集中在此软件包中。JCE(Java Cryptography Extension) 在JCA的基础上作了扩展,JCE也是由几个软件包组成,其中最主要的是javax.crypto 包,此软件包提供了JCE加密技术操作API。javax.crypto中的Cipher 类用于具体的加密和解密。在上述软件包的实现中,集成了应用RSA 算法的各种数据加密规范(RSA算法应用规范介绍参见:https://www.doczj.com/doc/6312648764.html,/rsalabs/node.asp?id=2146 ,这些API内部支持的算法不仅仅只有RSA,但是RSA是数字签名和证书中最常用的),用户程序可以直接使用java标准库中提供的API进行数字签名和证书的各种操作。 2.数字签名算法的基本框架

发送数字签名和加密邮件 实验报告

一、实验目的 ●了解什么是数字签名与加密 ●掌握用Outlook Express发送签名邮件的方法 ●掌握用Outlook Express 发送加密邮件的方法。 二、实验环境 ●实验室所有机器安装了Windows 操作系统,并附带Outlook Express。 三、实验内容和步骤 1、设置Outlook Express收发QQ邮件 (1)打开OUTLOOK EXSPRESS方法为开始/所有程序/OUTLOOK EXPRESS; (2)申请帐号方法:OUTLOOK EXSPRESS的工具/帐号/添加/邮件/输入显示名/输入你的QQ邮箱地址/设置电子邮件服务器名 https://www.doczj.com/doc/6312648764.html, https://www.doczj.com/doc/6312648764.html,/输入电子邮件的帐号名称和密码/下一步/完成 2、申请免费数字证书

查看证书: 3、在Outlook Express 设置数字证书 (1)在Outlook Express 中,单击“工具”菜单中的“帐号”(2)选取“邮件”选项卡中用于发送安全邮件的邮件帐号,然后单击“属性”。

(3)选取安全选项卡中的签名标识复选框,然后单击选择按健 (4)在弹出的“选择默认帐户数字标识”窗口中,选择要使用的数字证书,就选择你刚才申请的个人电子邮件保护证书 (5)点击“确定”按钮,完成证书设置。至此,你可以发送带数字签名的邮件。 4、发送签名邮件 发送邮件时从“工具”菜单中选择“签名”,收件人地址栏后面出现“签名”标志。

本次实验我给邮箱为16018733139@https://www.doczj.com/doc/6312648764.html, 发送一个签名邮件。 发送成功: 5、发送加密邮件 发送加密邮件前必须正确安装了对方的“电子邮件保护证书”,只要请对方用他的“电子邮件保护证书”给你发送一个签名邮件,证书会自动安装,并与对方Email地址绑定,否则就要手工安装对方“电子邮件保护证书”。 (1)从Outlook Express“工具”菜单中选择“选项”。 (2)鼠标单击“数字标识”按钮。

实验三 DSA数字签名算法

实验三DSA数字签名算法 姓名: 学号: 学院:信息工程学院 指导老师:郑明辉

1.DSA算法原理 数字签名是数据在公开行信道中传输的安全保障,能够实现数据的公开、公正、不可抵赖等特点的方法,只能公开的密钥、密码签名算法。国际供认的公开密钥签字算法主要有RSA算法、ElGAMAL算法或者其变形的签名算法。 DSA(Digite Signature Arithmotic )是Schnore和ElGamal算法的变型。 美国国家标准技术研究所(NIST)1994年5月19日公布了数字签名标准的(DSS),标准采用的算法便是DSA,密钥长度为512~1024位。密钥长度愈长,签名速度愈慢,制约运算速度的只要因素是大数的模指数运算。 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 = g^x mod p ,( p, q, g, y )为公钥; H( x ):One-Way Hash函数。DSS中选用SHA( Secure Hash Algorithm )。 p, q, g可由一组用户共享,但在实际应用中,使用公共模数可能会带来一定的威胁。签名及验证协议如下: 1. P产生随机数k,k < q; 2. P计算r = ( g^k 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 = (( g^u1 * y^u2 ) mod p ) mod q 若v = r,则认为签名有效。 DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。 DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却做不到。 3.源码描述

数据加密实验报告

实验报告 课程:计算机保密_ _ 实验名称:数据的加密与解密_ _ 院系(部):计科院_ _ 专业班级:计科11001班_ _ 学号: 201003647_ _ 实验日期: 2013-4-25_ _ 姓名: _刘雄 _ 报告日期: _2013-5-1 _ 报告评分:教师签字:

一. 实验名称 数据加密与解密 二.运行环境 Windows XP系统 IE浏览器 三.实验目的 熟悉加密解密的处理过程,了解基本的加密解密算法。尝试编制基本的加密解密程序。掌握信息认证技术。 四.实验内容及步骤 1、安装运行常用的加解密软件。 2、掌握加解密软件的实际运用。 *3、编写凯撒密码实现、维吉尼亚表加密等置换和替换加解密程序。 4、掌握信息认证的方法及完整性认证。 (1)安装运行常用的加解密软件,掌握加解密软件的实际运用 任务一:通过安装运行加密解密软件(Apocalypso.exe;RSATool.exe;SWriter.exe等(参见:实验一指导))的实际运用,了解并掌握对称密码体系DES、IDEA、AES等算法,及非对称密码体制RSA等算法实施加密加密的原理及技术。 ?DES:加密解密是一种分组加密算法,输入的明文为64位,密钥为56位,生成的密文为64位。 ?BlowFish:算法用来加密64Bit长度的字符串或文件和文件夹加密软件。 ?Gost(Gosudarstvennyi Standard):算法是一种由前苏联设计的类似DES算法的分组密码算法。它是一个64位分组及256位密钥的采用32轮简单迭代型加密算法. ?IDEA:国际数据加密算法:使用128 位密钥提供非常强的安全性; ?Rijndael:是带有可变块长和可变密钥长度的迭代块密码(AES 算法)。块长和密钥长度可以分别指定成128、192 或256 位。 ?MISTY1:它用128位密钥对64位数据进行不确定轮回的加密。文档分为两部分:密钥产生部分和数据随机化部分。 ?Twofish:同Blowfish一样,Twofish使用分组加密机制。它使用任何长度为256比特的单个密钥,对如智能卡的微处理器和嵌入在硬件中运行的软件很有效。它允许使用者调节加密速度,密钥安装时间,和编码大小来平衡性能。 ?Cast-256:AES 算法的一种。 (同学们也可自己下载相应的加解密软件,应用并分析加解密过程) 任务二:下载带MD5验证码的软件(如:https://www.doczj.com/doc/6312648764.html,/downloads/installer/下载(MySQL):Windows (x86, 32-bit), MSI Installer 5.6.11、1.5M;MD5码: 20f788b009a7af437ff4abce8fb3a7d1),使用MD5Verify工具对刚下载的软件生成信息摘要,并与原来的MD5码比较以确定所下载软件的完整性。或用两款不同的MD5软件对同一文件提取信息摘要,而后比较是否一致,由此可进行文件的完整性认证。

实验六 电子签章和手写签名实验报告

实验六电子签章和手写签名实验报告 实验六电子签章和手写签名实验指导书 一、WORD文档的加密解密 工具-选项-安全性-设置密码二、126邮箱的邮件发送加密。三、网购安全 /group/thread/ /group/thread/ /group/thread/ /group/thread/ /group/thread/ 四、电子签章 1、详细实验步骤: 在/iSignature/ 下载iSignature电子签章软件和iSignature制作软件及电子印章图样; 进行电子印章安装,并打开文件。按“开始——程序——iSignature电 子签章[教学版]——iSignature签章制作”的步骤进行。 打开“签章管理”选择“签章图片导入”,并在我的电脑里找到“演示洋章图案”选 择“金格科技财务章”,点击打开就出现如下图表 在“持有人”处输入持有人姓名,在“印章名称”处输入“财务章”,并在“印章密码”输入密码并确认并点击“确定”,然后点击关闭

在文件旁的电子签章工具栏里点击“电子签章”,在“签章信息”里 输入密码并点击确定,并把签章移动到单位盖章出即可;然后点击“手写签名”处进行签名即可完成。如图:2电子签章的基本原理: 电子签名(又称数字签名)技术建立在非对称密钥加密和报文摘要两种算法基础上。电子签章的核心技术是数字签名: 数字签名是电子签章的核心技术基础。数字签名的实现基础是加密技术,它使用公钥加密算法与散列函数。常用数字签名算法有:RSA、DSS、ECDSA、ELGamal、Schnorr等;还有一些用于特殊用途的数字签名,如盲签名、群签名、失败-终止签名等。 电子签章的核心技术是基于公开密钥体系的现代密码学。也是数字签名技术的重要应用之一。电子签章存于安全的密码IC卡中,私钥不可导出IC卡。进行电子签章时,根据签章对象不同,需要不同的签章软件支持。电子签章系统将传统的印章、手写签名以数字化的形式技术表现出来,依托于PKI/CA平台,利用数字签名技术保障电子签章及签章所在实体的安全。对于内嵌于办公软件中的电子签章系统来讲,主要的技术难点在于如何保证它不依赖于宿主的安全,能独立控制签章及公文的安全。比如:要保证签章后的公文

DSA数字签名算法

DSA数字签名算法 1 引言 为了确保数据传输的安全性,不得不采取一系列的安全技术,如加密技术、数字签名、身份认证、密钥管理、防火墙、安全协议等。其中数字签名就是实现网上交易安全的核心技术之一,它可以保证信息传输的保密性、数据交换的完整性、发送信息的不可否认性、交易者身份的确定性等。DSA(Digital Signature Algorithm,数字签名算法,用作数字签名标准的一部分),它是另一种公开密钥算法,它不能用作加密,只用作数字签名。DSA使用公开密钥,为接受者验证数据的完整性和数据发送者的身份。它也可用于由第三方去确定签名和所签数据的真实性。DSA算法的安全性基于解离散对数的困难性,这类签字标准具有较大的兼容性和适用性,成为网络安全体系的基本构件之一。 2. 数字签名 2.1 数字签名的概念 数字签名在ISO7498—2标准中定义为:“附加在数据单元上的一些数据,或是对数据单元所作的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(例如接收者)进行伪造”。 数字签名是通过一个单向函数对要传送的信息进行处理得到的用以认证信息来源并核实信息在传送过程中是否发生变化的一个字母数字串。数字签名提供了对信息来源的确定并能检测信息是否被篡改。 数字签名要实现的功能是我们平常的手写签名要实现功能的扩展。平常在书面文件上签名的主要作用有两点,一是因为对自己的签名本人难以否认,从而确定了文件已被自己签署这一事实;二是因为自己的签名不易被别人模仿,从而确定了文件是真的这一事实。采用数字签名,也能完成这些功能: (1)确认信息是由签名者发送的; (2)确认信息自签名后到收到为止,未被修改过; 签名者无法否认信息是由自己发送的。 数字签名和手签的区别是:手签是模拟的,易伪造,而数字签名是基于数学原理的,更难伪造。

一种基于身份认证的数字签名算法研究

龙源期刊网 https://www.doczj.com/doc/6312648764.html, 一种基于身份认证的数字签名算法研究 作者:陈卫军牛红惠 来源:《商场现代化》2009年第06期 [摘要] 针对电子商务领域的安全问题,利用基于身份的密码体制,提出了一种高效的数字签名算法。这种算法可以解决代理签名的问题,而且具有签名长度短、系统开销小、安全程度高等特点。 [关键词] 数字签名代理签名可公开验证 一、引言 随着网络技术的发展,全球经济一体化进程的加快,电子商务在世界范围内日渐得到普及和应用。但与此同时,交易的风险性和不确定性也大大增加,安全问题已经成为电子商务发展的瓶颈。近几年来,由于数字签名技术的广泛运用,电子商务系的统安全性得到了较好的保证。 然而,在现代商务活动中,我们常常会遇到一些需要把某些权力转交给特定的代理人,人代理人代为行使这些权利。比如,又一个单位的董事长需要出国考察,在考察期间,为了不耽误公司的正常工作,董事长可以委托一个特定的人员代为行使董事长的权力。为此,基于身份的密码体制就成为解决问题的关键。基于身份的密码学是由Shamir于1984年提出的。其主要观点是,系统中不需要证书,可以使用用户的标识如姓名、IP地址、电子邮件地址等作为公钥。用户的私钥通过一个被称作私钥生成器PKG(Private key generator)的可信任第三方进行计算得到。基于身份的密码系统的主要好处是可以减少证书存储和管理开销。 1996年Mambo、Usuda和Okamoto中给出了解决上述事例的方法,首先提出了代理签名的概念,并提出了一个简单的代理签名方案。代理签名是指原始签名者可以将其签名权力授权给代理签名者,然后代理签名者就可以代表原始签名者进行签名,当验证者验证一个代理签名时,需要同时验证签名和原始签名者的授权协议。然而,代理签名者代理原始签名者行使代理权时,其签名可以被任何第三方进行验证。在某些情况下,并不希望任何人都能验证代理签名,而只有指定的验证人才能验证代理签名。这在实际中是需要的,如电子商务中的电子投标,电子投票等。 文献介绍了其他的几种代理签名方案,但是这些方案在安全性方面都不同的有缺陷。1996年,Jakobsson等介绍了一个新的原语——指定验证者签名,指定验证者签名是指一个原始签名者可以使指定验证者相信他的申明是正确的,实现了只有指定验证者才能验证原始签名者的签名的特性,原因是指定验证者可以生成与原始签名者不可区分的签名,该签名虽然外人不能

代码数字签名

一、概述 数字证书又称为数字标识(Digital Certificate,Digital ID)。它提供了一种在Internet 上进行身份验证的方式,是用来标志和证明网络通信双方身份的数字信息文件,与司机驾照或日常生活中的身份证相似。在网上进行电子商务活动时,交易双方需要使用数字证书来表明自己的身份,并使用数字证书来进行有关的交易操作。通俗地讲,数字证书就是个人或单位在Internet 的身份证。 数字证书主要包括三方面的内容:证书所有者的信息、证书所有者的公开密钥和证书颁发机构的签名。 一个标准的X.509 数字证书包含(但不限于)以下内容: 证书的版本信息; 证书的序列号,每个证书都有一个唯一的证书序列号; 证书所使用的签名算法; 证书的发行机构名称(命名规则一般采用X.500 格式)及其私钥的签名; 证书的有效期; 证书使用者的名称及其公钥的信息。 在使用数字证书的过程中应用公开密钥加密技术,建立起一套严密的身份认证系统,实现: 除发送方和接收方外信息不被其他人窃取; 信息在传输过程中不被篡改; 接收方能够通过数字证书来确认发送方的身份; 发送方对于自己发送的信息不能抵赖。 代码签名证书主要颁发给软件开发商,用户在下栽、使用软件代码时,证书将证明软件代码的来源、完整性等信息,主要功能是让用户知道该软件代码是安全的并且没有被篡改过,用户可以安全地进行下载、使用。本业务支持Microsoft Authenticode Techology、Netscape Object Signing、Ms Office 2000/VBA Macro Signing 等代码签名技术。 二、使用代码签名证书 在获得数字证书之前,您必须向一个合法的认证机构(例如:广东省电子商务认证中心)提交证书申请。您需要填写书面的申请表格(试用型数字证书除外),向认证中心的证书申请审核机构(例如:广东省电子商务认证中心的代理点)提交相关的身份证明材料(如身份证、营业执照副本、组织机构代码证等)以供审核。当您的申请通过审核并且交纳相关的费用后,证书申请审核机构会向您返回证书业务受理号和证书下载密码。您通过这个证书业务受理号及下载密码,就可以到认证机构的网站上下载和安装证书了。 详细的证书申请与安装指南请参考https://www.doczj.com/doc/6312648764.html, 上“客户服务区”->“操作指南”->“使用手册”上的相关内容。 以下是微软的代码签名控件的使用说明。详细的操作指南请参考微软提供的代码签名控件的广东省电子商务认证中心证书应用指南(codesign)说明文档。 2.1 利用证书对代码进行签名 2.1.1 第一步:下载微软的控件 在使用代码签名证书对程序员编写的程序代码进行签名之前,请到微软的网站上上下载代码签名的工具。 根据用户不同的环境要求,根据以下链接下载相对应驱动程序:

基于RSA的数字签名实现

实验2 基于RSA的数字签名实现 一、实验目的 掌握RSA算法的基本原理,通过用RSA算法对实际数据进行加密和解密来深刻了解RSA的运行原理。对数字签名有所了解,理解和掌握SHA–512算法,以及如何利用RSA和SHA–512算法来实现数字签名。 二、实验原理 1. RSA算法简介 公钥密码体制中,解密和加密密钥不同,解密和加密可分离,通信双方无须事先交换密钥就可建立起保密通信,较好地解决了传统密码体制在网络通信中出现的问题.另外,随着电子商务的发展,网络上资金的电子交换日益频繁,如何防止信息的伪造和欺骗也成为非常重要的问题.数字签名可以起到身份认证,核准数据完整性的作用.目前关于数字签名的研究主要集中基于公钥密码体制的数字签名. 公钥密码体制的特点是:为每个用户产生一对密钥(PK和SK);PK公开,SK保密;从PK推出SK是很困难的;A,B双方通信时,A通过任何途径取得B的公钥,用B的公钥加密信息.加密后的信息可通过任何不安全信道发送.B收到密文信息后,用自己私钥解密恢复出明文. RSA公钥密码体制到目前为止还是一种认可为安全的体制. RSA算法和用RSA算法实现数字签名的理论,以及它们在实际应用中的实现. 1、RSA算法 RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。 RSA的算法涉及三个参数,n、e1、e2。 其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。 e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。 (n及e1),(n及e2)就是密钥对。 RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e1 mod n;B=A^e2 mod n; e1和e2可以互换使用,即: A=B^e2 mod n;B=A^e1 mod n; 2.RSA数字签名算法的理论描述 RSA数字签名算法的过程为:A对明文m用解密变换作: s Dk (m)=md mod n,其中d,n为A的私人密钥,只有A才知道它;B收到A的签名后,用A的公钥和加

相关主题
文本预览
相关文档 最新文档