数字签名技术
几种数字签名方案简介

几种数字签名方案简介1、RSA数字签名方案RSA是最早公钥密码算法之一,由Ron Rivest、Adi Shamir和Leonard Adleman于1978年发明。
RSA数字签名方案基于大数分解难题,其安全性与RSA问题紧密相关。
在RSA数字签名方案中,发送方使用私钥对消息进行签名,接收方使用公钥验证签名。
2、DSA数字签名方案DSA数字签名算法由美国国家标准与技术研究院(NIST)提出,并被采纳为联邦数据处理标准(FIPS)。
DSA数字签名方案基于离散对数难题,其安全性主要依赖于有限域上的离散对数问题。
DSA算法相较于RSA 算法,具有签名长度短、速度快以及抗量子攻击等优点。
3、ECDSA数字签名方案ECDSA是椭圆曲线数字签名算法,其基于椭圆曲线密码学,是在有限域上的椭圆曲线离散对数问题的基础上构建的。
ECDSA数字签名方案相较于RSA和DSA算法,具有更高的安全性和更低的计算开销。
因为椭圆曲线密码学具有较高的安全性和较低的计算复杂性,所以ECDSA 被广泛应用于比特币等加密货币中。
4、EdDSA数字签名方案EdDSA数字签名算法是对标DSA的抗量子攻击算法,由欧洲电信标准化协会(ETSI)提出。
EdDSA使用的是Schnorr签名算法的一种变体,具有较高的安全性和抗量子攻击能力。
此外,EdDSA算法还具有速度快、签名长度短等优点。
以上几种数字签名方案都是目前广泛应用的算法,每种方案都有其特定的应用场景和优缺点。
在实际应用中,我们需要根据具体需求选择合适的数字签名算法以保证信息的安全性和完整性。
随着互联网的快速发展,数字签名方案在信息安全领域变得越来越重要。
数字签名方案用于验证信息的完整性、真实性和不可抵赖性,广泛应用于电子政务、电子商务和网络安全等领域。
无证书数字签名方案作为一种新兴的数字签名技术,因无需证书颁发机构颁发证书,具有降低成本、提高效率等优点,逐渐受到广泛。
本文将对几种无证书数字签名方案进行介绍,并对其安全性进行分析及改进。
数字签名技术原理

数字签名技术原理数字签名技术是一种通过数字方式来确认文件或信息完整性、真实性和不可抵赖性的技术手段。
它在现代信息安全领域起着至关重要的作用,被广泛应用于电子商务、电子政务、金融交易等领域。
数字签名技术的原理和实现方式对于保障信息安全至关重要,下面我们来详细了解一下数字签名技术的原理。
首先,数字签名技术基于非对称加密算法。
非对称加密算法是指使用一对密钥,即公钥和私钥,来进行加密和解密操作。
公钥可以公开,任何人都可以使用它来加密信息,但只有持有对应私钥的人才能解密。
数字签名技术利用这一特性,发送方使用私钥对信息进行加密生成数字签名,接收方使用发送方的公钥对数字签名进行解密验证,从而确认信息的完整性和真实性。
其次,数字签名技术还依赖于哈希函数。
哈希函数是一种能够将任意长度的输入数据转换为固定长度哈希值的函数。
在数字签名技术中,发送方首先对待签名的信息进行哈希运算,得到哈希值,然后使用私钥对哈希值进行加密生成数字签名。
接收方同样对接收到的信息进行哈希运算得到哈希值,然后使用发送方的公钥对数字签名进行解密得到原始哈希值,最后比对两个哈希值来确认信息的完整性和真实性。
此外,数字签名技术还涉及到数字证书的应用。
数字证书是由权威的数字证书认证机构颁发的,用于证明公钥的合法性和真实性。
在数字签名技术中,发送方的数字签名需要携带数字证书一起发送给接收方,接收方利用数字证书来验证发送方的公钥的合法性,从而确保数字签名的可信度。
总的来说,数字签名技术利用非对称加密算法、哈希函数和数字证书等技术手段来实现信息的完整性、真实性和不可抵赖性。
它在保障信息安全方面发挥着重要作用,能够有效防止信息被篡改、伪造和否认。
随着信息技术的不断发展,数字签名技术也在不断完善和应用,为信息安全提供了有力保障。
综上所述,数字签名技术的原理是基于非对称加密算法、哈希函数和数字证书的应用,通过这些技术手段来实现信息的完整性、真实性和不可抵赖性。
它在现代信息安全领域扮演着至关重要的角色,对于保障信息安全具有重要意义。
数字签名的原理及过程

数字签名的原理及过程数字签名是一种用于验证数据完整性和身份认证的技术。
它利用公钥密码学的原理,通过对数据进行加密和解密操作,确保数据的真实性和可靠性。
本文将详细介绍数字签名的原理及过程。
一、数字签名的原理数字签名是基于公钥密码学的技术,它使用了非对称加密算法和哈希算法。
非对称加密算法使用了两个密钥,一个是公钥,一个是私钥。
公钥用来加密数据,私钥用来解密数据。
而哈希算法则是一种将任意长度的数据转换为固定长度摘要的算法。
数字签名的原理可以简单概括为以下几个步骤:1. 发送方使用私钥对要发送的数据进行加密,并生成数字签名。
2. 接收方使用发送方的公钥对接收到的数据进行解密,并获得数字签名。
3. 接收方使用相同的哈希算法对接收到的数据进行哈希运算,并生成摘要。
4. 接收方将生成的摘要与解密后的数字签名进行比对,如果一致,则说明数据完整且发送方身份真实。
二、数字签名的过程下面将详细介绍数字签名的具体过程:1. 发送方使用私钥对要发送的数据进行加密,并生成数字签名。
发送方首先使用哈希算法对要发送的数据进行哈希运算,生成摘要。
然后,发送方使用自己的私钥对摘要进行加密,生成数字签名。
2. 发送方将加密后的数据和数字签名一起发送给接收方。
接收方接收到数据后,首先使用发送方的公钥对数字签名进行解密,得到解密后的摘要。
3. 接收方使用相同的哈希算法对接收到的数据进行哈希运算,生成摘要。
然后,接收方将解密后的摘要与自己计算得到的摘要进行比对。
如果两者一致,则说明数据完整且发送方身份真实。
三、数字签名的应用数字签名在现代通信和电子商务中得到了广泛的应用。
它可以确保数据的完整性,防止数据被篡改或伪造。
同时,数字签名还可以用于身份认证,确保通信双方的身份真实可靠。
在电子商务中,数字签名可以用于验证商家的身份和交易的完整性。
当消费者在网上购物时,商家可以使用私钥对订单信息进行加密,并生成数字签名。
消费者在收到订单信息后,可以使用商家的公钥对数字签名进行解密,并验证订单的完整性和商家的身份。
数字签名名词解释

数字签名名词解释数字签名是一种安全的认证和防篡改技术,用于保证数据的完整性、身份的真实性和通信的机密性。
数字签名是通过将特定的算法应用于数据生成一段不可逆的摘要,并用数字证书中的私钥进行加密。
数字签名由以下几个要素组成:1. 非对称加密算法:数字签名使用非对称加密算法,其中包括公钥和私钥。
公钥用于加密数据,私钥用于解密数据。
只有拥有私钥的人才能生成数字签名,即使拥有公钥的人也无法伪造数字签名。
2. 数字证书:数字签名需要使用数字证书来验证身份。
数字证书由证书颁发机构(CA)颁发,包含了用户的公钥和相关信息,并由CA的私钥签名。
接收方可以验证数字证书的完整性和真实性,以确认发送方的身份。
3. 加密算法:数字签名使用加密算法对数据进行加密,常用的包括RSA、DSA和ECDSA等。
这些算法具有较高的安全性和不可逆性,可有效保护数据的完整性和真实性。
数字签名的工作过程如下:1. 发送方生成消息的摘要:发送方使用特定的算法对消息进行哈希处理,生成唯一的摘要。
2. 发送方使用私钥加密摘要:发送方对摘要使用自己的私钥进行加密,生成数字签名。
3. 发送方将消息和数字签名一起发送给接收方。
4. 接收方获取发送方的公钥和数字签名。
5. 接收方使用发送方的公钥解密数字签名,得到摘要。
6. 接收方使用相同的算法对接收到的消息进行哈希处理,得到新的摘要。
7. 接收方比较两个摘要是否一致。
如果一致,表示消息没有被篡改;如果不一致,表示消息被篡改过。
通过数字签名,可以确保数据在传输过程中不受篡改。
此外,还可以验证数据的发送方身份,防止伪造和重放攻击。
数字签名广泛应用于电子邮件、电子合同、电子支付和网络通信等领域,提高了数据的安全性和可信度。
数字签名技术的现状、发展与应用

数字签名技术的现状、发展与应用随着信息技术的飞速发展,数字签名技术已经成为人们日常生活中不可或缺的一部分。
本文将详细介绍数字签名技术的概念、作用、现状、发展以及在各个领域的应用,最后对数字签名技术的未来进行展望。
数字签名技术是一种基于公钥密码体制的签名技术,通过使用发送方的私钥对消息进行签名,接收方使用发送方的公钥来验证签名的真实性。
数字签名技术具有以下几个特点:安全性:数字签名技术采用了密码学算法,不易被伪造和篡改,保证了消息的安全性。
唯一性:每个发送方都有一个唯一的私钥,使得数字签名具有唯一性。
可追溯性:数字签名可以追溯到发送方的公钥,使得签名可以被验证和跟踪。
数字签名技术在信息安全领域具有非常重要的地位。
数字签名技术可以用来确认消息的来源,保证信息的真实性。
数字签名技术可以防止消息被篡改,保证信息的完整性。
再次,数字签名技术可以防止发送方抵赖,保证交易的安全性。
数字签名技术可以作为身份认证的手段,使得只有合法用户才能进行特定的操作。
随着云计算、物联网等技术的快速发展,数字签名技术的应用越来越广泛。
目前,数字签名技术已经广泛应用于电子商务、电子政务、在线支付、供应链管理等领域。
同时,数字签名技术也面临着一些挑战和问题,如性能瓶颈、安全漏洞等。
随着技术的不断进步,数字签名技术也在不断发展。
未来,数字签名技术将朝着以下几个方向发展:技术创新:未来数字签名技术将不断进行技术创新,提高签名的效率和安全性。
多种应用场景:数字签名技术的应用场景将越来越广泛,不仅应用于传统的电子商务、电子政务等领域,还将扩展到医疗、教育、金融等领域。
政策法规:随着数字签名技术的广泛应用,政策法规也将不断完善,以保护用户的隐私和安全,促进数字签名技术的发展。
数字签名技术在各个领域都有广泛的应用。
在电子商务领域,数字签名技术可以用来确认订单的真实性和完整性,保证交易的安全性。
在电子政务领域,数字签名技术可以用来确认申报材料的真实性,防止伪造和篡改。
数字签名 原理

数字签名原理
数字签名是一种用于验证数字文件真实性和完整性的技术。
它基于公钥密码学原理,通过对文件进行加密处理和签名生成,验证方能通过公钥解密签名并对比文件内容,从而判断文件是否被篡改。
数字签名原理如下:
1. 数字签名需要一对密钥:私钥和公钥。
私钥用于签名生成,公钥用于验证签名。
2. 验证方首先需要获取文件的原始副本,发起方则需要对文件进行签名。
3. 发起方使用私钥对文件进行加密运算,生成唯一的数字摘要。
该数字摘要是一个固定长度的字符串,可以代表文件的内容。
4. 接着,发起方使用私钥对数字摘要进行加密运算,生成数字签名。
数字签名在合法情况下是唯一的,它与文件内容和私钥直接相关,一旦文件内容变更或私钥泄露,数字签名也会改变。
5. 发起方将数字签名与文件一起传递给验证方,验证方需要具备发起方的公钥。
6. 验证方利用公钥对数字签名进行解密运算,得到原始的数字摘要。
7. 验证方再次运用相同的算法,从获取的文件中生成数字摘要。
8. 最后,验证方将两个数字摘要进行比对,如果相同则文件没有被篡改,否则文件内容发生了变更。
数字签名的原理依赖于私钥的安全性和公钥的广泛分发。
私钥应妥善保管,只有签名生成方可以使用,以确保数字签名的独特性和可信度。
同时,公钥需要广泛分发给验证方,以确保验
证方可以获得正确的公钥进行签名验证。
总之,数字签名通过加密运算生成独特的数字签名,实现对文件真实性和完整性的验证,确保文件的安全性和可信度。
数字签名技术

数字签名技术数字签名技术是一种应用密码学原理的数字身份认证方法,可以保证数据的完整性、真实性和不可抵赖性。
在现代通信和信息安全领域中,数字签名技术被广泛应用于文件传输、电子邮件、电子合同以及电子商务等方面。
本文将介绍数字签名的原理、应用场景以及其对信息安全的重要意义。
一、数字签名的原理数字签名技术基于非对称加密算法和哈希算法实现,其核心原理是使用私钥对数据进行加密生成签名,然后使用公钥对签名进行解密验证。
具体过程如下:1. 数据摘要:首先使用哈希算法对原始数据进行计算,生成唯一的摘要信息,也称为哈希值。
2. 私钥加密:将摘要信息与私钥进行加密操作,生成数字签名。
3. 公钥解密:使用相应的公钥对数字签名进行解密,得到解密后的数据。
4. 数据比对:将解密后的数据与原始数据进行比对,若一致则表示数据未被篡改,否则表示数据被篡改。
二、数字签名的应用场景1. 文件传输与验证:数字签名技术能够对文件进行签名,确保文件在传输过程中不被篡改。
接收方可以通过验证数字签名来判断文件的真实性和完整性。
2. 电子邮件安全:通过对电子邮件内容进行数字签名,接收方可以验证邮件的真实性和发送者的身份。
这样可以防止伪造邮件、篡改邮件、重放攻击等攻击方式。
3. 电子合同的认证:数字签名技术可用于对电子合同进行认证,确保协议的真实性和不可抵赖性。
相比传统的纸质合同,电子合同更加便捷、高效和安全。
4. 数字版权保护:数字签名技术可以用于保护数字内容的版权,确保数字内容在传播过程中不被篡改或盗用。
三、数字签名技术的重要意义1. 数据完整性保护:数字签名技术可以保证数据在传输和存储过程中不被篡改,确保数据的完整性。
2. 身份认证与不可抵赖:通过数字签名,可以验证数据发送方的身份,并且发送方无法抵赖自己发送的数据。
3. 信息安全保障:数字签名技术能够对数据进行加密和解密,并通过签名验证确保数据的安全性,有利于防范恶意攻击和信息泄露。
4. 电子商务应用:数字签名技术为电子商务的发展提供了安全保障,保护用户的交易信息和隐私。
数字签名技术

数字签名技术பைடு நூலகம்
– 报文摘要算法采用单向Hash函数,将需加密的明文“摘要”成一串 128bit的密文。其基本的规则是:
– 1) 接受的输入报文数据没有长度限制。 – 2) 对任何输入报文数据生成固定长度的摘要输出。 – 3) 由报文能方便地算出摘要。 – 4) 难以对一个指定的摘要生成一个报文,但该报文可以得出指定的摘
数字签名技术
– 与DSS不同,RSA既可以用来加密数据,也可以用于身份认证。和 Hash签名相比,在公钥系统中,由于生成签名的密钥只存储于用户的 计算机中,安全系数大一些。
电子商务
数字签名技术
• 1.3 数字摘要
– 数字摘要 (Digital Digest) 又称报文摘要 (Message Digest) ,是一种安全 Hash编码法 (SHA-Secure Hash Algorithm) 加密方法。
– 为了把那些千差万别的报文与数字签名不可分割地结合在一起,要设 法从报文中提取一种确定格式的、符号性的摘要,就称为报文摘要, 更形象一点的说法就是数字指纹 (Digital fingerprint) 。
– 1) 需加时间戳的文件的摘要 (digest) 。 – 2) DTS收到文件的日期和时间。 – 3) DTS的数字签名。
数字签名技术
• 时间戳产生的过程是:
– 用户首先将需要加时间戳的文件用Hash编码加密形成摘要,然后将该 摘要发送到DTS,DTS在加入了收到文件摘要的日期和时间信息后再 对该文件加密 (数字签名) ,最后送回用户。书面签署文件的时间是由 签署人自己写上的,而数字时间戳则不同,它是由认证单位DTS所加, 以DTS收到文件的时间为依据。
数字签名技术
• 1.1 对称密钥的数字签名
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
广东海洋大学寸金学院考查课论文课程名称:网络安全技术论文题目:数字签名方案的设计或分析系别:信息技术系专业:信息管理与信息系统班级: 1班姓名:张伟兴学号: 2012103080131任课老师:陈瑞志指导教师:日期:2015年 5 月 27 日教务处制数字签名方案的设计或分析摘要:网络通信促进和加速社会信息化的发展,但是网络环境下的信息安全并不令人乐观,信息在传输的过程中有可能被删除、篡改和重放,给人们的生活和工作造成了许多麻烦。
正是在这种情况下,数字签名技术便应运而生了。
随着对数字签名技术研究的深入和实际应用的需要,普通的数字签名已不能满足人们的需要,许多有着特殊用途的数字签名方案被提了出来。
本文主要介绍了信息加密技术的应用。
RSA算法是目前公认的在理论和实际应用中最为成熟和完善的一种公钥密码体制,它是第一个既能用于数据加密也能用于数字签名的算法,是公钥密码体制的代表。
数字签名是起到身份认证、核准数据完整性的一种信息安全技术。
它通过认证技术来辨认真伪。
RSA数字签名体制使用的是RSA公开密钥密码算法进行数字签名。
关键词:信息加密,数字签名,RASDe sign or analysis of digital signature scheme Abstract:Network communication to promote and accelerate the development of the information society, but in the information security under the network environment is not optimistic, information in the process of transmission may be deleted, tampering and replay, caused a lot of trouble to people's life and work. It is in this case, the digital signature technology came into Bing.With the needs of the research on digital signature technology in-depth and practical application, ordinary digital signature has been unable to meet the people's need that many special purpose digital signature scheme is proposed.This paper mainly introduces the application of information encryption technology.. RSA algorithm is currently recognized is the most mature and perfect in a public key cryptosystem in theory and practical application, it is the first both for data encryption can also be used for digital signature algorithm, is representative of the public key cryptosystem. Digital signature is a kind of information securitytechnology which is the identity authentication and approval data integrity.. It identifies the authenticity by authentication technology. RSA digital signature system is RSA public key encryption algorithm for digital signature.Key words:Information encryption, digital signature, RAS1 研究背景计算机技术的高速发展为人类提供了高度的自动化和现代化,而网络的迅猛发展为人们提供了便捷、快速的信息交流方式,使人类社会迅速进入了信息化时代。
由于信息的传递、存储、处理等过程往往是在开放的通信网络上进行的,因而因特网的信息容易受到窃听、截取、修改、伪造、重放等各种攻击手段的威胁,其安全及其脆弱。
特别是网络系统面临着很大的威胁,并成为严重的社会问题之一。
网络安全成为现在网络应用亟待解决的一个问题。
网络安全包括物理安全、网络系统安全、数据安全、信息内容安全和信息基础设施安全等。
数字签名,也有人称之为数字签字、电子签名、电子签章等,是对传统手写签名的模拟,是当前网络安全领域的一个研究热点。
它是电子政务、电子商务、电子银行、电子证券等等系统必备的关键性技术,在日常电子邮件的安全保障中也有大量的应用。
2RSA数字签名基本概念和RSA数字签名算法的实现原理2.1 RSA数字签名基本概念RSA数字签名体制使用了RSA公开密钥密码算法进行数字签名,鉴于RSA算法在实践中已经被证明了的安全性,RSA数字签名体制在许多安全标准中得以广泛应用。
ISO/IEC 9796和ANSI X9.30-199X 以及美国联邦信息处理标准FIPS 186-2已经将RSA作为推荐的数字签名标准算法之一。
RSA数字签名算法,包括签名算法和验证签名算法。
它是利用的RSA算法的加密和解密算法的原理进行的一种数字签名,实际上是通过一个哈希函数来实现的(本设计是通过的MD5算法)产生消息摘要MD来实现的所需加密的对象。
数字签名的特点是它代表了消息的特征,消息如果发生改变,数字签名的值也将发生改变,不同的消息将得到不同的数字签名。
安全的数字签名使接收方可以得到保证:消息确实来自发送方。
因为签名的私钥只有发送方自己保存,他人无法做一样的数字签名,如果第三方冒充发送方发出一个消息,而接收方在对数字签名进行解密时使用的是发送方的公开密钥,只要第三方不知道发送方的私有密钥,加密出来的数字签名和经过计算的数字签名必然是不相同的,这就提供了一个安全的确认发送方身份的方法,即数字签名的真实性得到了保证。
数字签名通过认证技术来辨认真伪。
认证技术主要包括数字签名认证、身份认证以及公开密钥证明等。
数字签名认证机制提供了一种对数字签名进行鉴别的方法;身份认证机制提供了辨别和确认通信双方真实身份的方法;公开密钥证明机制则对密钥进行验证。
网络时代中,人们验证数字签名来确定你正在和谁打交道,验证你的文件是否已被黑客篡改。
数据的安全性和真实性已成为网络安全中至关重要的一部分。
数字签名类似手书签名,它具有以下的性质:1)能够验证签名产生者的身份,以及产生签名的日期和时间;2)能用于证实被签消息内容;3)数字签名可由第三方验证,从而能够解决通信双方的争议。
为了实现数字签名的以上性质,它就应满足下列要求:1)签名是可信的:任何人都可以验证签名的有效性;2)签名是不可伪造的:除了合法的签名者外,任何人伪造其签名是困难的;3)签名是不可复制的:对一个消息的签名不能通过复制变为另一个消息的签名。
如果一个消息的签名是从别处复制得到的,则任何人都可以发现消息与签名之间的不一致性,从而可以拒绝签名的消息;4)签名的消息是不可改变的:经签名的消息不能篡改,一旦签名的消息被篡改,任何人都可以发现消息与签名之间的不一致性;5)签名是不可抵赖的:签名者事后不能否认自己的签名。
可以由第三方或仲裁方来确认双方的信息,以做出仲裁。
数字签名的原理是:(发送方和接收方根据要求各自产生自己的一对公钥和私钥)1)被发送文件采用某种算法对原始消息进行运算,得到一个固定长度的数字串,称为消息摘要(MD),不同的消息得到的消息摘要各异,但是对相同的消息它的消息摘要却是唯一的;2)发送方生成消息的消息摘要,用自己的私钥对摘要进行加密来形成发送方的数字签名;3)这个数字签名将作为消息的附件和消息一同用接收方的公钥进行加密,将加密后的密文一起发送给接收方;4)接收方首先把接收到的密文用自己的私钥解密,得到原始消息和数字签名,再用发送方的公钥解密数字签名,随后用同样的算法计算出消息摘要;5)如果计算出来的消息摘要和发送方发送给他的消息摘要(通过解密数字签名得到的)是相同的,这样接收方就能确认数字签名确实是发送方的,否则就认为收到的消息是伪造的或是中途被篡改的。
3 RSA算法的实现3.1 数据结构RSA密码系统的安全性依赖于大数分解的难度,一般建议用户选择的素数p和q至少为100位,则n=pq是至少为200位的十进制数.因此实现RSA算法有必要定义大数的数据结构. typedefstruct{unsigned long intbn[MAX_LENGTH];unsigned int size;}BigNum密钥生成,加密和解密涉及到一些大数的基本运算.定义大数的基本运算库,包括加,减,乘,除,取模运算等,其中最重要的模乘运算和模幂运算.模幂算法是加密解密的核心算法.计算模幂的一种有效算法是"平方-乘"方法,通过对指数的二进制化来实现.Procedure modmultbegintypedefstruct {unsigned int bits; /* 公钥n的位数 */unsigned char modulus[MAX_RSA_ LEN] ;/*公钥n*/unsigned char exponent[MAX_RSA_LEN]; /*公钥e*/} RSA_PUBLIC_KEY;图3 RSA公钥Z=1for i=l-1 downto 0 do:beginZ=Z 2 mod n;if bi=1 then Z=Z*x mod n;endend3.2 密钥的生成3.2.1 RSA公钥和私钥的结构定义根据文档PKCS#1定义RSA公钥和私钥分别如图2和图3.理论上讲,RSA私钥只需包括解密模数和解密指数.但是为加快RSA解密计算的效率,采用中国剩余定理算法,因此RSA私钥包含p,q,d mod (p-1),d mod (q-1),q-1 mod p,其中p,q为大素数, d mod (p-1), d mod (q-1),q-1 mod p由计算过程生成.3.2.2 生成密钥步骤typedefstruct {unsigned int bits; /*公钥n的长度*/unsigned char modulus[MAX_RSA_LEN]; /*公钥n */unsigned char publicExponent[MAX_RSA_ LEN]; /*公钥e */unsigned char exponent[MAX_RSA_LEN]; /*私钥d*/unsigned char prime[2][MAX_RSA_ LEN]; /*两个素数因子*/unsigned char primeExponent[2][MAX_RSA_PRIME_LEN];unsigned char coefficient[MAX_RSA_PRIME_LEN];} RSA_PRIVATE_KEY;生成RSA密钥需完成下列步骤:(1) 选择e的值为3或者25537;(2) 随机生成大素数p,直到gcd (e,p-1)=1;其中gcd(a,b)表示a,b取最大公约数(3) 随机生成不同于p的大素数q,直到gcd (e,q-1)=1;(4) 计算n=pq , (n)=(p-1)(q-1);(5) 计算d,满足de1 (mod (n));(6) 计算d mod (p-1), d mod (q-1);(7) 计算q-1 mod p;(8) 将n,e放入RSA公钥;将n,e,d mod (p-1),d mod (q-1) q-1 mod p放入RSA私钥.3.2.2.1 随机数的产生随机数不仅用于密钥生成,也用作公钥加密时的填充字符.它必须具有足够的随机性,以防止破译者掌握随机数的规律性后重现密钥的配制过程或者探测到加密块中的明文.因为在计算机上不可能产生真正的随机数,实际采用周期大于2256位的伪随机序列发生器.实现过程为:(1) 记录相邻两次敲击键盘的时间间隔,直到不再需要随机事件.(2) 做MD5计算,直到不再需要伪随机数.3.2.2.2 素数的产生对随机数作素性检测,若通过则为素数;否则增加一个步长后再做素性检测,直到找出素数.素性检测采用Fermat测试.这个算法的理论依据是费尔马小定理:如果m是一个素数,且a不是m的倍数,那么根据费尔马小定理有:a m-1=1 ( mod m). 实际应用时:a m-1 = 1 ( mod m) a m = a ( mod m) a= a m ( mod m), 因此对于整数m,只需计算a m ( mod m),再将结果与a比较,如果两者相同,则m为素数.选取a=2,则a一定不会是任何素数的倍数.3.3 加密过程加密规则为:Ek(x)=xb mod n,xZn加密过程的输入为:明文数据D,模数n, 加密指数e(公钥加密)或解密指数d(私钥加密).输出为密文.D的长度不超过[log2n]-11,以确保转换为PKCS格式时,填充串的数目不为0.格式化明文. 采用PKCS格式: EB = 00 || BT || PS || 00 || D 其中BT表示块的类型,PS为填充串,D为明文数据.开头为0确保EB长度大于k.对公钥加密BT=02,对私钥解密BT=01.当BT=02时,PS为非0随机数;当BT=01,PS值为FF.明文由字符型数据转换成整型数据.RSA计算. 为整数加密块x作模幂运算:y = x^c mod n,0 <= y 为密文,公钥加密时,c 为公钥加密指数e;私钥加密时,c为私钥加密指数d.密文由整型数据转换成字符型数据.3.4 解密过程解密规则为 Dk(x)=yc mod n,yZn,Zn为整数集合,x为密文.解密过程的输入为:密文ED;模数n;加密指数e(公钥解密)或解密指数d(私钥解密),结果为明文.(1) 密文整型化.(2) RSA计算. 对密文做模幂运算:x = y^c mod n, 0 <= x <n .,其中x为明文.(3) 此时明文为整型数据,转换为ASCII型数据,得到PKCS格式的明文.(4) 从PKCS格式明文中分离出原明文. 从PKCS格式分离明文的过程也是检查数据完整性的过程.若出现以下问题则解密失败:不能清楚的分割;填充字符少于64位或与BT所注明的类型不匹配;BT与实际操作类型不符.RSA数字签名算法的实现RSA数字签名算法,包括签名算法和验证签名算法.首先用MD5算法对信息作散列计算.签名的过程需用户的私钥,验证过程需用户的公钥.A用签名算法将字符串形式的消息处理成签名;B用验证签名算法验证签名是否是A对消息的签名,确认是A发送的消息;消息没有被攥改过;A一定发送过消息.1 签名算法签名算法包括三步:消息摘要计算,RSA加密.消息摘要计算. 消息在签名前首先通过MD5计算,生成128位的消息摘要digest.对摘要作RSA计算. 用加密算法,采用签名者的私钥加密消息摘要,得到加密后的字符串.加密算法中使用的加密块为01类型.2 验证签名算法验证签名算法包括两步:RSA解密得签名者的消息摘要,验证者对原消息计算摘要,比较两个消息摘要.验证签名的过程输入为消息,签名者的公钥,签名;输出为验证的结果,即是否是正确的签名.RSA解密. 签名实际是加密的字符串.用3.5所述的解密算法,采用签名者的公钥对这个加密的字符串解密.解密的结果应为128位的消息摘要.在解密过程中,若出现得到的加密块的类型不是01,则解密失败.签名不正确.消息摘要计算和比较. 验证者对消息用MD5算法重新计算,得到验证者自己的消息摘要.验证者比较解密得到的消息摘要和自己的消息摘要,如果两者相同,则验证成功,可以确认消息的完整性及签名确实为签名者的;否则,验证失败.4 结束语本文讨论了RSA算法的基本原理和基本实现.RSA算法是一种安全技术,但是RSA算法的安全性只是一种计算安全性,绝不是无条件的安全性,这是由它的理论基础决定的.因此,在实现RSA算法的过程中,每一步都应尽量从安全性考虑.本文采取的一些主要算法是目前在数学上被认可的安全的算法之一.本文所提到的算法及实现原理已在作为设计的安全电子邮件系统中完全实现并获得满意的效果.参考文献[1]StallingsW.密码编码与网络安全: 原理与实践[M ]. 北京: 电子工业出版社, 2001. 239~ 241[2]洪琳, 李展. 数字签名、数字信封和数字证书[ J ]. 计算机应用, 2000, 20 (2) : 21~ 22[3]Garm s J , Somerfield D. J ava 安全性编程指南[M ]. 北京: 电子工业出版社, 2002. 136~ 169[4]冯登国,裴定一,科学出版社,《密码学导引》,1999[5]刘智勇.智能交通控制理论及其应用[M].北京.科学出版社.2003[6]卢开澄,《计算机密码学》,清华大学出版社,1998。