数字加密技术研究与分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
类型:课程设计
题目:数字加密技术研究与分析
目录
摘要............................................... 错误!未定义书签。ABSTRACT ........................................... 错误!未定义书签。目录 (2)
第一章RSA公钥密码简介 (4)
1.1公开密钥密码系统 (4)
1.2RSA加密算法 (5)
1.3RSA公钥密码的安全 (8)
第二章RSA加密算法的有关数学知识 (10)
2.1数论 (10)
2.1.1 模运算 (10)
2.1.2素数 (10)
2.1.3最大公因子 (12)
2.1.4幂模运算 (14)
2.1.5 乘法逆元 (16)
2.2RSA中重要定理 (18)
2.2.1 费马定理 (18)
2.2.2 欧拉定理 (19)
2.2.3 欧几里德算法 (22)
第三章 MD5算法简介 (27)
3.1MD5算法的发展史 (27)
3.2MD5算法的应用 (28)
3.3MD5算法描述 (29)
3.3.1 MD5算法的步骤 (29)
3.3.2 MD5的压缩函数 (36)
3.4 MD5算法的安全 (41)
第四章 MD5算法在RSA算法中应用 (42)
4.1RSA算法加密文件 (42)
4.1.1 加密过程 (42)
4.1.2 解密过程 (43)
4.2文件的信息摘要 (46)
4.3MD5算法在RSA算法中的应用 (47)
4.4补充说明 (48)
第一章RSA公钥密码简介
1.1 公开密钥密码系统
一个好的加密算法的重要特点之一是具有这种能力:可以指定一个密码或密钥,并用它来加密明文,不同的密码或密钥产生不同的密文。这又分为两种方式:对称密钥算法和非对称密钥算法。所谓对称密钥算法就是加密解密都使用相同的密钥,非对称密钥算法就是加密解密使用不同的密钥。非常著名的pgp公钥加密以及RSA加密方法都是非对称加密算法。加密密钥,即公钥,与解密密钥,即私钥,是非常的不同的。从数学理论上讲,几乎没有真正不可逆的算法存在。
公钥密码又称为双钥密码和非对称密码,是1976年由Diffie和Hellman在其“密码学新方向”一文中提出的。他是用一个密钥进行加密,而用另一个不同但是有关的密钥进行解密。
图1.1.1给出了公开密钥加密过程。其中重要步骤如下:
1)网络中的每个端系统都产生一对用于它将接收的报文进行加密和解密的密钥。
2)每个系统都通过把自己的加密密钥放进一个登记或者文件来公布告它,这就是公开密钥。另一个密钥则是私有的。
3)如果A想给B发送一个报瘪他就用B的公开密钥加密这个报文。
4)B收到这个报文后就用他的保密密钥解密报文。其他所有收到这个报文的人都无法解密它,因为只有B才有B的私有密钥。
图1.1.1 加密过程
非对称密钥算法RSA算法于1977年由美国麻省理工学院MIT(Messachusetts Institute of Technology)的Ronal Rivest ,Adi Shamir 和Len Adleman三位年轻教授提出,并以三人的姓氏Rivest ,shamir 和Adlernan命名为RSA算法。该算法利用了数论领域的一个事实,那就是虽然把两大质数相乘生成一个合数是件十分容易的事情,但是把一个合数分解为两个质数却十分困难。合数分解问题目前仍然是数学领域尚未解决的一大难题,至今没有任何高效的分解方法。RSA算法无须收发双方同时参与加密过程,且非常适合于电子函数系统的加密。
1.2 RSA加密算法
RSA算法可以表述如下:
(1)密钥配制。假设m是想要传送的报文,现任选两个很大的质数p与q,
ϕ=-⨯-互质,且e 小于使得:选择正整数e,使得e 与()(1)(1)
n p q
ϕ=-⨯-;再利用相除法,求得d,使得到:
n p q
()(1)(1)
≡
ed n
1(mod)
这里表示n=q*p,其中x mod y是整数求模运算,其结果是x整除以y 后剩余的余数,如果5 mod 3 =2。所以密钥是:(e,n),是用于加密的公共密钥,可以公开出去;而(d,n)是用于解密的专用钥匙,必须保密。
用VC++求的RSA加密解密参数和密钥是:
结果分析是:由上图得知,公钥是{931, 1067}, 私钥是{331,1067}。
(2)加密过程。使用(e,n)对明文m进行加密得到密文c,算法为:
c =m e mo
d n.
加密结果为:
使明文变成了不能读的密文。
(3)解密过程。使用(d,n)对密文c进行解密,算法为:
m = c e mod n
求得的m是对应于密文c的明文。
解密结果为:
解密的结果是使密文变成原文。
RSA 公共密钥加密算法的核心是欧拉(Euler)函数()n ϕ。对于正整数n, ()n ϕ定义为小于n 且与n 互素的正整数的个数。例如(6)ϕ=2,这是因为小于6且与6互素的数有1和5共两个数。
欧拉定义有两个重要性质:
性质1: 如果p 是质数,则:
()1p p ϕ=-
性质2: 如果p 与q 均为互质数,则:
()(1)(1)p q p q ϕ⨯=-⨯-
RSA 算法正是注意到这两条性质设计公共密钥系统的,p 与 q 的乘积n
可以说作为公共密钥公布出来,而n 的因子p 与q 则包在专用密钥中,可以用来解密。如果解密需要用到()n ϕ接收方由于知道因子p 和q ,可以方便地算出:
()(1)(1)n p q ϕ=-⨯-
如果窃听得了n ,但由于不知道它的因子p 与q ,则很难求出()n ϕ。这时,窃听者要么强行算出()n ϕ,要么对n 进行因数分解求得p 与q 。然而,我们知道,在大数范围内作合数分解是十分困难的,困此窃听者很难成功。