RSA公钥加密算法的设计与实现.docx_第1页
RSA公钥加密算法的设计与实现.docx_第2页
RSA公钥加密算法的设计与实现.docx_第3页
RSA公钥加密算法的设计与实现.docx_第4页
RSA公钥加密算法的设计与实现.docx_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

RSA公钥加密算法的设计与实现IIIRSA公钥加密算法的设计与实现【论文摘要】RSA公钥加密算法是目前最有影响力的非对称加密算法,为ISO的推荐的加密标准。而非对称加密因其安全性、开放性以及在数字签名技术中的重要性,在我们的生活中被使用得越加频繁。RSA的安全性建立在大整数的分解困难上,其基本原理是初等数论中的欧拉定理。在工业实现上,为了保证加密的安全性,通常要求密钥对大于1Kbits,然而计算机的整型变量为32bits,这构成一个矛盾。此外,RSA密钥的生成需要产生随机的大素数,这也是本文需要解决的问题。【关 键 词】RSA;非对称加密;素数The design and implementation of RSA public key encryption algorithm 【ABSTRACT】RSA public key encryption algorithms are the most influential dissymmetrical encryption algorithms, the recommended encryption standard to ISO. And dissymmetrical encryption is used more and more frequently in our lives because of its security, openness and the importance in digital signature technology.RSAs security is built on the difficulties of big integer factorization, whose basic principle is the Eulers theorem in elementary number theory. In order to ensure the security of encryption, when it comes to industry, we often require the key pair is greater than 1Kbits. However, the integer class of computers occupies 32bits, which constitutes a contradiction. In addition, RSAs key-generation needs a random large prime number, which is also a problem to be solved.【Keywords】 RSA; dissymmetrical encryption; prime number目录RSA公钥加密算法的设计与实现IThe design and implementation of RSA public key encryption algorithmI目录II一前言2(一)引论2(二)背景知识21. 密码技术的发展22. 密码学的主要任务23. 密码系统的安全性24. 对称与非对称密码的区别25. 公钥:RSA密码体制2二、实验部分2(一)实验目的2(二)实验环境2(三)实验步骤21. 大整数类22. 快速模幂运算23. 快速产生随机素数24. 扩展的欧几里德算法2(四)代码设计21. 大整数类22. Rsa类23. 关键代码2三、结果与讨论2(一)程序展示21. 程序主界面22. RSA密钥产生23. 加密解密展示2(二)RSA分析21. RSA的安全性22. RSA效率2(三)小结2注释2参考文献2致谢2中山大学本科生毕业论文一前言(一)引论从公元前5世纪,古希腊斯巴达人用木棍和带子进行换位密码,到现在的网上购物、网上银行,密码学在我们生活中占着越来越重要的地位。如同我们寄信会把信纸放入信封并在封口签名,以免他人获知信件内容以及在投递过程中被更改丢失原意,使用密码是为了保证信息的秘密性、不可更改性等。密码学真正得到革新,是在计算机的广泛传播之后。1977年,DES(the Data Encryption Standard,数据加密标准)被美国政府正式采纳 (1)。同年,RSA公钥加密算法由Ron Rivest、Adi Shamirh和Len Adleman在美国麻省理工学院开发,是目前最有影响力的公钥加密算法,现已被ISO推荐为公钥数据加密标准。 (2)2005年电子签名法的施行 (3),是中国信息化进程发展的必然需求和有力保障,说明了密码学被公众相信、使用,并被立法支持。电子签名技术的实现需要用到非对称算法和报文摘要,所以,RSA作为公钥加密的标准算法,值得我去学习、研究和实现。RSA算法的数学基础是初等数论中的欧拉定理,其安全性建立在大整数因子分解的困难性上。为了有效地实现RSA密码体制,必须解决如下三个问题: (4)1. 大整数类的实现:计算机中,通常的编程语言的长整型是64bits的,而计算安全的RSA要求密钥长度长达1024bits或以上,故要设计出一个无限大(大于10000bits)的整数类,并重载各种初等运算。2. 模幂运算的快速计算:RSA的加密解密算法都需要大量的模n指数运算,而模n和指数m都很大,所以模幂运算的快速算法十分重要。3. 快速产生大素数:RSA算法中每一个密钥的产生需要两个随机的大素数参与运算,然而现在还没有产生任意大素数的有用技术。通常的做法是随机选取一个需要数量级的奇数并验证是否素数,如此重复。因此验证素数的算法速度也十分重要。接下来,我会参考各个相关文献,找出办法解决问题,并实现RSA算法。(二)背景知识在古代战争中,因为需要的保密通信,密码技术应运而生。但长久以来,军事、政治、外交等要害部门,为求保密,并不外传密码技术,而是一直把持着密码知识。然而随着计算机技术和网络通信技术的发展,越来越多的电子政务、电子商务普遍需求安全通信,密码技术才从军用走向商用民用,并得到更加迅速的发展。在如今的信息时代,信息安全的重要性日益彰显,密码学作为信息安全的核心也受到各个机构的重视。密码技术不但可以保证信息的机密性,还有防篡改和数字签名等功能。下面我将做一个密码学的简介。1. 密码技术的发展根据加密解密手段和器械的不同,密码技术的发展历史大致可以划分古典密码、近代密码和现代密码时期这三个时期。 (5)(1) 古典密码时期这一时期从古代到19世纪末,长达数千年。由于这个时期社会生产力底下,产生的许多密码体制都是以“手工作业”的方式进行,用纸笔或简单的器械实现加密和解密。公元前440多年的斯巴达人发明了一种称为“天书”的加密器械来秘密传递军事情报。“天书”是通过把一个带状物如羊皮带,成螺旋状紧紧地缠绕在一根权杖或者木棍上,然后再沿着纵向书写信息,展开后就成为无意义的点线。解密时,找一个同样直径的木棍缠绕上,就可以看到明文。这是最早的移位密码(也称换位密码或置换密码)。在大约公元前1世纪,罗马帝国凯撒大帝设计出一种简单的替换式密码,并在高卢战争中使用。这种密码的实现方式是把信中每个文字的字母都按字母顺序表中相隔两位后的一个字母取代。这一时期的密码技术仅是一门文字变换艺术,如上面所说的置换密码和替换密码。这样的密码研究和应用远没有形成一门科学,最多能称为密码术。(2) 近代密码时期近代密码时期是指20世纪初到20世纪50年代左右。这个时期的加密解密主要是用机电设备来实现的。1895年无线电诞生后,各国在通信,特别是军事通信中普遍采用无线电技术。由于无线电的广播性,为了实现保密,各国随即开始研究无线电密码的编制和破译。从1919年以后的几十年中,密码研究人员设计出了各种各样采用机电技术的密码及来取代手工编码加密方法,实现保密通信的自动编解码。近代密码时期可以看作是科学密码学的前夜,这阶段的密码技术是一种技巧和经验的结合体,还不是一门科学。密码学专家常常通过经验和技巧来设计加密算法(即转轮机),而没有形成系统的理论体系。(3)近代密码时期1949年香农(Claude Shannon)的奠基性论文“保密系统的通信理论”的发表,首次将信息论引入密码技术的研究,用统计的观点对信源、密码源、秘闻进行数学描述和定量分析,引入了不确定性、多余度、唯一解距离等安全性测度概念和计算方法,为现代密码学研究与发展奠定了坚实的理论基础,把已有数千年历史的密码技术推向了科学的轨道,使密码学成为一门真正的科学。1977年,美国国家标准局正式公布实施了美国的数据加密标准(Data Encryption Standard, DES),被多个部门和标准化机构采纳为标准,甚至成为事实上的国际标准。更具有重要意义的是DES密码开创了公开全部密码算法的先例,大大推动了分组密码理论的发展和技术应用。1976年,美国斯坦福大学的注明密码学迪菲(W. Diffie)和赫尔曼(M. Hellman)发表了“密码学新方向”疑问,首次提出了公钥密码体制的概念和设计思想,开辟了公开密钥密码学的新领域,掀起了公钥密码研究的序幕。受到他们的思想启迪,Ron Rivest、Adi Shamirh和Len Adleman提出了第一个较完整的公钥密码体制RSA体制,成为公钥密码的杰出代表和实施标准,在密码学历史上是一个里程碑。由于计算机技术和网络通信技术的研究和发展,密码学又出现很多新的课题。如,过去普遍认为有足够安全性的DES密码算法,在新的技术和分析方法前,被证明是不够安全的,因此又确定了新的加密标准AES(Advanced Encryption Standard,高级加密算法)。在公钥密码领域,椭圆曲线密码体制由于其安全性高、计算速度快等优点引起人们的普遍关注和研究,并在公钥密码技术中取得重大进展,成为公钥密码研究的新方向。在数字签名方面,各种具有不同实际应用背景的签名方案,如盲签名、群签名、一次性签名、不可否认签名等不断出现。在密码学应用方面,各种有实用价值的密码体制的快速实现受到高度重视,许多密码标准、应用软件和产品被开发和应用。美国、德国、日本和我国等许多国家已经颁布了数字签名法,使数字签名在电子商务和电子政务等领域得到了法律的认可,推动了密码学研究和应用的发展。2. 密码学的主要任务经典的密码技术研究的是加密和解密的理论,然而现在的密码学不再局限于此,而是成为信息安全的重要组成部分,为存储和传输中的数字信息提供如下几个方面的安全保护。(1) 机密性即保证信息不被未授权的人获得信息内容。通过加密信息实现。(2)数据完整性即保证信息被使用时的内容,跟它被制作出来时一致。要防止的修改包括篡改、插入、删除和重放。通过加密、报文摘要和数字签名等实现。(3)鉴别即保证信息来源的身份是预期身份,并隐含了数据完整性服务。(4)抗抵赖性即通信实体不能否认之前的通信行为,包括发送过的信息以及收到的信息。3. 密码系统的安全性密码系统的安全性由密码算法的安全性和密钥管理的安全性组成,必须同时完善密码算法以及密钥管理才能保证密码系统的安全。下面仅介绍密码算法安全性的评价标准,通常由以下三种方法评估。(1)无条件安全性即假定攻击者拥有无限的计算资源,也无法通过唯密文攻击获得明文或者密钥。也就是说攻击者在观察密文前后,密钥的不确定性没有改变,这要求有跟消息一样长的随机密钥。符合这个要求的一次一密密码体制因为密钥的分配问题,往往并不实用。(2)计算安全性即攻它破所需的计算量远大于攻击者的计算资源(或者攻破所能获得的利益),就可以定义这个密码算法是安全的。目前多数使用的密码体制都属于这一类。(3)可证明安全性即可以把密码体制的安全性归结为某个数学难题,而这个数学难题(如大整数分解)被证明是求解困难的。可证明安全性是计算安全的。4. 对称与非对称密码的区别对称密码加密解密用的是同一个密钥,而非对称密码却是成对出现,一个用以加密,另一个用来解密。通常非对称密码把其中一个密钥公开作为公钥,另一个私有作为私钥。因此,非对称密码又称为公钥密码。(1)密钥数量对称加密要求每一对用户都有一个密钥来保证安全通信。对n个用户,要保证两两之间能够安全通信,需要个密钥。而非对称只需每个用户拥有自己的私钥和其他用户的公钥就能进行加密通信。(2)效率由于非对称加密通常基于某些数学难题,通常来自于数论,这些问题的底层涉及到大量模幂运算,相对于对称密码需要更多的计算资源。所以通常公钥密码只用于加密少量数字信息,通过公钥加密传输对称加密密钥来加密文件。(3)系统开放性对称密码需要通信双方有相同的密钥才能进行加密通信,这在双方不认识或者没有安全的信道传递对称密钥的情况下,无法进行加密通信。而公钥加密系统只要获得对方公开的公钥就可以进行加密通信。(4)数字签名数字签名(Digital Signature)技术是不对称加密算法的典型应用。 (6)5. 公钥:RSA密码体制公钥密码体制的一个想法就是:也许能找到一个密码体制,使得由给定的ek来求dk是计算上不可行的。如果这样的话,加密规则ek是一个公钥,可以在一个目录中公布(这也就是公钥体制名称的由来)。 (7)RSA公钥密码体制的具体描述如下。 (4)(1)密钥生成选择两个随机大素数p和q,并计算和。选择一个随机数,满足,并计算。公钥为,私钥为。(2)加密对明文,其对应密文为。(3)解密对密文,其对应明文为。(4)证明由于,故存在整数满足。故有。而此式在时显然也成立。同样可以推出故有二、实验部分(一)实验目的通过对RSA的研究和实现,学习RSA的数学基础、掌握RSA加密的原理和方法、巩固计算机编程能力。(二)实验环境Microsoft Windows 7Microsoft Visual Studio 2010Microsoft .Net Framework 4.0使用C# 编程语言(三)实验步骤在引论中写了要实现RSA,必须先解决大整数类的实现、模幂运算的快速计算以及快速产生大素数这三个问题。此外,计算需要用到扩展的欧几里德算法(Extended Euclid)。1. 大整数类大整数一般指数位超过计算机整数类型值集范围的整数。如C中的Unsigned long型整数能处理整数值4294967295(232-1),占据32bits存储空间,此时,大整数就是指大于4294967295的十位以上的整数。若取109为“基”,即以109为一个存储单元。109=(1000)3= 1; return r; 3. 快速产生随机素数如引论所说,没有方法直接产生一个素数,通常的做法是产生一个随机奇数,判断是否为素数,产生一个随机数恰好是素数的概率是。于是分为两部分,一是随机数产生,二是素性判断。由计算机函数产生的随机数称伪随机数,有许多文章对伪随机数的构造原理、实现方法和效果(生产效率和随机性)进行了分析和研究,但由于mscorlib.dll中有伪随机数生成器random(),所以不再重写而是直接阅读MSDN (9)使用之。素数测试算法主要分两种:概率素数测试算法和真素数测试算法。概率素数测试算法的特点是:算法速度较快、原理简单、易于编程实现、有一定的误判概率。真素数测试算法速度很慢,比如最基础的从开始测试每一个整数是否被待测试数整除直到。目前最好的基于椭圆曲线的算法的时间复杂度是,基于割圆环的测试算法的时间复杂度是。且真素数测试算法背后的理论比较艰深,在计算机中的实现十分复杂,实现复杂带来的不正确实现的安全隐患要比概率算法误判带来的安全隐患大得多。概率算法的误判完全可以被控制在一个极低的可接受的概率范围内,误判概率在以下足以满足绝大部分的安全需求。综合上述原因,在实际应用中,大多使用基于概率的素数测试算法。通过对比,选择Miller-Rabin算法作为素数测试算法。Miller-Rabin算法是Fermat算法的一个变形改进,它的理论基础是从Fermat定理引申而来的。Fermat定理:是一个奇素数,是任何整数,则。事实:是一个奇素数,则方程只有两个解。Miller-Rabin算法的理论基础:如果是一个奇素数,将表示为的形式(是奇数),是和互素的任何整数,那么或者对某个,等式成立。这个理论由Fermat定理以及一个事实推导而来。Miller-Rabin算法的误判概率为,时间复杂度为,其中为测试次数。 (10)4. 扩展的欧几里德算法欧几里德算法是辗转相除法,用于计算两整数的公约数,其依赖原理如下:(且不为0)扩展欧几里德定理:对于不完全为0的非负整数,以及其最大公约数,必存在整数对,使得。其实现方法是在进行辗转相除法时,因为恒等变换得(其中是取商)故能设计出一个递归函数,求出x,y,满足。(四)代码设计1. 大整数类在前文中已经说明了我的大整数类的数据结构定为布尔型数组。实际上,在开始写这个类的时候,我用的是int数组与bool数组并存或者可以随时切换的形式。这样的类可以灵活处理数据,比如录入一个十进制数,和另外一个十进制数相加再输出时,可以直接调用两个十进制数相加的函数,并直接输出,节约了三次进制转换。然而,这样的类变得很复杂和臃肿,且在这个程序里不会有这样的要求,故最后把十进制模式移出并构建新类。类的数据结构与字段如下:图2.4.1-1 十进制整数类图2.4.1-2 二进制整数类字段,类名Bigint类中,用数组储存大整数的绝对值,符号放在sign中,并用length表示长度。这里的length不是数组的长度,而是数组的有用长度;用length表示长度可以在比较大小,四则运算时节约计算。大整数绝对值在bool数组中的储存方式是,把大整数二进制化,低位放在数组低位,高位在数组高位。如把2放入,则把2二进制化为102,则_body0=0,_body1=1;并赋值length为2。接着进行运算符重载。图2.4.1-3 大整数类运算符重载其中包括一个从int型到Bigint型的隐式转换函数,可以在进行Bigint型与int型值进行运算时节约代码。公开的函数中,对5种二元计算,6种比较运算以及1种一元计算进行了重载,并完成了哈希函数和相等函数的重写。下面的私有函数用以辅助上面的函数实现,如BinaryCheckZero用于确定body的有效数位;BinaryDividestep用于做除法运算中的一步,即被除数顶位减除数。下面是进制转换与输入输出。图2.4.1-4 进制转换十进制到二进制的转换是通过一般的“除2取余,逆序排列” (11)方式,但二进制转十进制却不是用通常的“按权相加”法,而是“乘2加1”的方法。图2.4.1-5 输出重写ToString()函数,用了参数c以确定输出类型,比如二进制输出、十进制输出等。图2.4.1-6 输入与构造函数输入主要是从string型到Bigint型,同样用参数c传递数据类型,d为十进制输入,b为二进制输入。没有做完整性检查。静态构造函数是设定一个全文的随机种子。在我开始构思设计Bigint类时,是把它暂定为内部的(internal关键字),所以各个主要函数与辅助函数时严格地区分了public和private。而在实现随机数产生、Miller-Rabin素数测试等算法的时,发现直接对数组body进行操作能大大提高代码效率,故在Bigint类中添加了几个完整的功能函数。图2.4.1-7 功能函数其中,IsPrime()是直接调用IsPrimeMillerRabin2Nd();Randomint()产生n位二进制奇数;Mimod()是快速模幂运算(由于模幂运算不是常用计算,所以也放在功能函数里了)。 类里还有几个常数声明或者只读变量。图2.4.1-8 常数声明与只读变量其中,Randomlength是产生Miller-Rabin随机测试数a的长度;Randomtype指产生的是二进制随机数;IsPrimeTimes是Miller-Rabin素数判定的测试次数;Rnm是上文所说静态构造函数里的随机种子变量。为了避免设置生成顺序与引用的麻烦,把Bigint类改为public类型,方便下面Rsa类对其的引用。2. Rsa类Rsa类的功能是RSA公钥模数、加密解密密钥对的产生,以及加密解密功能。图2.4.2-1 字段其中,PrimeA是素数;PrimeB是素数;N是素数积;MultiPrime是产生密钥的中间变量;EnCodekey是加密密钥;DeCodekey是解密密钥。图2.4.2-2 构造函数RsaReBuild()实际上就是生成函数。图2.4.2-3 生成函数前两个函数分别是产生的函数和产生的。RsaNaEnginner()中第二个a并无实际意义,只是为了符合函数的命名习惯。图2.4.2-4 辅助函数创建了一个结构ExtendedEuclidReturn用于返回扩展的欧几里德算法解值; ExtendedEuclid()是扩展的欧几里德函数;PrimeEngineer()是素数产生函数。图2.4.2-5 功能函数分别是加密解密函数,Rsashow()用于展示RSA的各个字段。图2.4.2-5 常数声明这两个长度都是指二进制随机数产生时的位数。3. 关键代码大整数类虽然很关键也很繁琐,但其实原理很简单,实现上也没有什么困难,所以不列为关键代码。(1)快速模幂运算(2)Miller-Rabin素数测试(3)扩展的欧几里德算法其中,Bigint.Copy(b)出现的原因是“%”的重载会修改两个参数的值,这个可以通过改进“%”算法修正。三、结果与讨论(一)程序展示1. 程序主界面图3-1 程序主界面程序界面由一个Label,3个TextBox,和若干个Button组成。按钮功能如下:RSA.show:展示当前RSA字段;RSA.buildN:重新生成模数N以及密钥;RSA.code:在当前N的基础上生成新密钥;1.encode:把输入框1中的整数用当前RSA加密;2.decode:把输入框2中的整数用当前RSA解密;1mi2mod3:输入框1为,输入框2为,输入框3为,计算;3.素数:返回输入框3是否为素数;1gcd2:求出输入框1与输入框2的公约数。其中,后面三个函数是这次实验的副产品。2. RSA密钥产生 点击RSA.show(1)模数N产生点击RSA.buildN(2) 密钥产生点击RSA.code3. 加密解密展示(1)加密键入201205,点击1.encode(2)解密点击2.decode(二)RSA分析RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作,是被研究得最广泛的公钥算法。从提出到现在的三十多年里,它经历了各种攻击的考验,普遍认为是目前最优秀的公钥方案之一。然而,RSA算法却有一些比较明显的弱点。 (2)1. RSA的安全性RSA的安全性依赖于大数的因子分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前,RSA的一些变种算法已经被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解多个十进制的大素数。因此,模数n必须选大一些,因具体使用情况而定。RSA加密方法面对下面两种攻击十分脆弱。(1)选择密文攻击攻击者将信息作了伪装让拥有私钥的实体签署,然后通过计算可以得到它想要的信息,这是利用了一个事实:乘幂保留了输入的乘法结构,这个问题来自于公钥密码系统中最有用的特征每个人都能使用公钥,因而无法从算法上解决这个问题,只能在管理上保证不能随意对不知来源的信息签名,并最好使用单向加密作HASH处理等。(2)公共模数攻击若两个实体共用一个模数,只是用不同的密钥对,那么,最普遍的情况是同一信息用不同的公钥加密,而这些公钥共模互质,信息无需私钥即可恢复。设为信息明文,加密密钥分别为,攻击者知道,就可以计算出。用扩展的欧几里德算法,可求得满足:不妨设为负数,则再用这方法求得,则当然,还有别的公共模数攻击方法,解决这个问题的办法只有一个,就是不要共享模数。2. RSA效率RSA算法的效率比起对称加密算法十分低,这个粗糙的程序更是远远达不到工业水平,不过这不妨碍我通过完成这个程序达到学习加密算法的目的。通过实验测试当密钥长度上升时,密钥生成时间的变化规律。为了达到这个目的,给程序加上一个时间变量,并进行10次运算,测试10次密钥产生的平均时长。表3.2.2-1 密钥生产时间密钥长度/模数n长度(bits)产生时间(秒)200.12300.18400.31500.441000.941251.911503.271755.3920010.2322510.5925021.2527527.8130048.08500247.24相对于对称加密,RSA的一大缺点是时间和空间的效率很低。(1)密钥长度大为了保证安全性,模数至少要600bits以上,这使得运算代价很高,速度较对称加密算法慢几个数量级。而且这个数目还在增加。目前,SET(Secure Electronic Transaction)协议中要求CA(Certification Authority)采用2048bits长的密钥,其他实体使用1024bits的密钥。(2)密钥长度增长快随着保密强度的增加,模数的长度增长得非常快,下表列出了同一保密级别的密钥长度。表3.2.2-2 各个保密级别密钥长度保密级别对称密钥长度(bits)RSA密钥长度(bits)ECC密钥长度(bits)保密年限808010241602010112112204822420301281283072256204019219276803842080256256153605122120(3)密钥产生困难RSA密钥的产生受限于素数产生技术,而素数的产生效率取决于素数判定算法的效率。Miller-Rabin算法的一轮最坏时间复杂度为(以模n乘法为基本操作),为了达到的误判率,要进行40次MR判断。此外,选取一个随机奇数,这个数恰好是素数的概率为。(三)小结本文叙述了RSA公钥加密的原理、算法,并在本人进行程序实现后,详细说明了本人的思路、方法选择以及关键代码。在边学边写的模式下,这个程序耗费我近一个月的时间,超过900行近20000字符,完成了满足需求的大整数类,实现了RSA公钥加密算法的实际应用。在这个过程中,我依次参考资料解决了实现RSA遇到的几个难题:大整数、模幂运算、素数判定等。但较为遗憾的是,由于时间的缘故,许多函数需要进行效率上的优化,某些地方可能有错漏,甚至可能要有较大的调整才能作为工业实现应用。注释:1. 网民:08天使之城. 数据加密算法. 百度百科. 联机 31, 2012年1月13日. 引用日期: 2012年4月11日. /view/7510.htm.2. 网民:zhangjie791029. RSA算法. 百度百科. 联机 29, 2012年2月15日. 引用日期: 2012年4月11日. /view/7520.htm.3. 新华社. 中华人民共和国电子签名法. 中央政府门户网站. 联机 2005年6月27日. 引用日期: 2012年4月11日. /flfg/2005-06/27/content_9785.htm.4. 刘嘉勇. 应用密码学. 北京: 清华大学出版社, 2008. 页 73-76. ISBN: 9787302177159.5. . 应用密码学. 北京: 清华大学出版社, 2008. 页 1-5. ISBN: 9787302177159.6. 网民:shdiao. 数字签名. 百度百科. 联机 49, 2012年3月21日. 引用日期: 2012年4月11日. /view/7626.htm.7. StinsonR.Douglas. Cryptography Theory and Practice Third Edition. 编辑 马岚、李秦华. 翻译 冯登国等. 第三版. 北京: 电子工业出版社, 2006. 页 126-127. ISBN 978-7-121-09028-8.8. 李文华、董克家. 大整数精确运算的数据结构与基选择. 编辑 怀进鹏、陶小雪. 计算机工程与应用. 2006年11月11日, 卷 42, 32-0024-03.9. Microsoft. Microsoft Developer Network. MSDN Library. 联机 Microsoft. /library/.10. 秦晓东、辛运帏等. MillerRabin算法研究与优化实现. 编辑 孙德炜. 计算机工程. 2002年, 卷 28卷, 10-0055-03.11. 网民:凯文一世. 十进制转二进制. 百度百科. 联机 2012年3月3日. 引用日期: 2012年4月11日. /view/1426817.htm. 35.参考文献:1. 刘嘉勇. 应用密码学. 北京: 清华大学出版社, 2008. ISBN: 97873021771

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论