RSA公开密钥算法
- 格式:ppt
- 大小:226.50 KB
- 文档页数:8


(1)、RSA算法描述❒RSA公钥密码体制的基本原理:根据数论,寻求两个大素数比较简单,而将他们的乘积分解开则极为困难。
欧拉函数Φ(n):Φ(n)表示小于n且与n 互素的正整数个数。
显然,对于任一素数p,有Φ(p) = p-1。
求欧拉函数值:对两个不同的素数p 和q,如果n=pq,则Φ(n) = Φ(p)×Φ(q) = (p-1)×(q-1)❒RSA算法密钥计算过程:用户秘密选取两个大素数p 和q,计算n=pq,n称为RSA 算法的模数,公开。
计算出n的欧拉函数Φ(n) = (p-1)×(q-1),保密。
从(1, Φ(n))中随机地选择一个与Φ(n)互素的数e作为加密密钥,公开。
计算出满足下式的d 作为解密密钥,保密。
ed=1 mod Φ(n)R SA算法密钥:加密密钥PK = |e, n| 公开解密密钥SK = |d, n| 保密举例:选择两个素数p=7 以及q=17。
计算:n=pq=7×17=119,Φ(n)=(p-1)(q-1)=96 。
选择小于Φ(n)且与Φ(n)互素的e ,这里取e=5 。
根据式:ed=1 mod Φ(n) 计算d :代入已知值:5d = k×96 + 1,求得d = 77❒RSA算法加密解密过程:R SA算法属于分组密码,明文在加密前要进行分组,分组的值m 要满足:0<m <n加密算法:C = E(m) ≡me mod n解密算法:m = D(c) ≡cd mod n证明加密和解密是一对逆运算:欧拉定理:对任何互素的整数a 和n,有:aΦ(n) ≡1 mod n →aΦ(n)+1 ≡a mod n 欧拉定理推论:给定两个素数p 和q,以及整数n=pq 和m,其中0<m <n ,则下列关系成立:mΦ(n)+1 ≡m mod n →mΦ(n) ≡1 mod n →[ mΦ(n) ]k ≡1 mod n →mkΦ(n) ≡1 mod n证明:因为ed = 1 mod Φ(n),所以存在k使得ed = kΦ(n)+1,k为不小于1的整数。
公钥加密算法RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,广泛应用于网络安全、加密通讯等领域。
RSA算法利用了大数因子分解的困难性,实现了在公开密钥和私有密钥的情况下进行加密和解密的过程。
在Python中,可以使用第三方库`rsa`来实现RSA算法的应用。
一、RSA算法的原理RSA算法的原理基于数论的知识,主要依赖于大数因式分解问题的困难性。
其基本原理如下:1. 选择两个大质数p和q,计算它们的乘积n=p*q。
2. 计算n的欧拉函数φ(n)=(p-1)(q-1)。
3. 选择一个整数e,使得1<e<φ(n),且e与φ(n)互质。
4. 计算e的模φ(n)的逆元d,即d≡e^(-1) mod φ(n)。
5. 公钥为(n,e),私钥为(n,d)。
6. 加密过程为C≡M^e mod n,其中M为明文,C为密文。
7. 解密过程为M≡C^d mod n。
二、Python实现RSA算法在Python中,可以使用`rsa`库来实现RSA算法的应用。
首先需要安装`rsa`库:```pythonpip install rsa```然后可以按照以下步骤使用`rsa`库来实现RSA算法的加密和解密过程:1. 生成RSA密钥对:```pythonimport rsa(pubkey, privkey) = rsa.newkeys(1024)```其中,1024表示密钥长度,可以根据需要进行调整。
2. 加密明文:```pythonmessage = 'hello, world!'crypto = rsa.encrypt(message.encode(), pubkey)```3. 解密密文:```pythonpl本人n = rsa.decrypt(crypto, privkey).decode()print(pl本人n)```通过以上步骤,就可以在Python中实现RSA算法的加密和解密过程。
RSA加密算法一、RSA加密简介RSA加密算法是一种非对称加密算法。
在公开密钥加密和电子商业中RSA 被广泛使用。
RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。
当时他们三人都在麻省理工学院工作。
RSA就是他们三人姓氏开头字母拼在一起组成的。
1973年,在英国政府通讯总部工作的数学家克利福德·柯克斯(Clifford Cocks)在一个内部文件中提出了一个相同的算法,但他的发现被列入机密,一直到1997年才被发表。
二、RSA原理RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
对极大整数做因数分解的难度决定了RSA算法的可靠性。
换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。
尽管如此,只有一些RSA算法的变种被证明为其安全性依赖于因数分解。
假如有人找到一种快速因数分解的算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降。
但找到这样的算法的可能性是非常小的。
今天只有短的RSA钥匙才可能被强力方式解破。
到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。
只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。
但在分布式计算和量子计算机理论日趋成熟的今天,RSA 加密安全性受到了挑战。
三、密钥生成随意选择两个大的质数p 和q ,p 不等于q ,计算q p n *=。
根据欧拉函数,求得 1)-(q 1)-(p = φ(q)φ(p) = φ(n)**选择一个整数e 使得 (n) φ e 1<<且1 = φ(n)) gcd(e, , (n, e) 作为公钥发布选择一个整数d 使得d 是e 关于模φ(n)的模反元素即φ(n)) (mod e d -1≡,φ(n)) (mod 1 ≡ e d *,把(n, d) 作为私钥保存。