RSA加密算法加密与解密过程解析
RSA算法加密流程
RSA算法加密流程
1.密钥生成:
1.随机选择两个不相等的质数p和q,并计算它们的乘积n=p*q。
2.计算φ(n)=(p-1)*(q-1),φ(n)被称为欧拉函数。
3.随机选择一个整数e,满足1<e<φ(n)且e与φ(n)互质。
4.计算e关于φ(n)的模反元素d,即满足(e*d)%φ(n)=1
5.公钥为(n,e),私钥为(n,d),其中(n,e)对外公开,(n,d)保密保存。
2.加密过程:
1.将明文消息转换为对应的整数M,满足0≤M<n。
2.使用公钥(n,e)对明文进行加密,计算密文C=(M^e)%n。
3.解密过程:
1.使用私钥(n,d)对密文进行解密,计算明文消息M=(C^d)%n。
下面对RSA算法的加密流程进行详细解释:
1.密钥生成:
在此步骤中,需要生成一对公钥和私钥。公钥(n,e)由生成的两个质
数p和q的乘积n以及另一个整数e组成。私钥(n,d)由n和e的一些衍
生数学属性得到。
首先,在这一步中,随机选择两个不相等的质数p和q。质数的选择
尽量要大,并且保密。然后计算乘积n=p*q,这将成为模数。接着计算欧
拉函数φ(n)=(p-1)*(q-1),它表示小于n且与n互质的整数的个数。
接下来,随机选择一个整数e,满足条件1<e<φ(n)且e与φ(n)互质。互质的意思是e和φ(n)之间没有公因数。然后,计算e关于φ(n)的模反元素d,即满足(e*d)%φ(n)=1、在这里,可以使用扩展欧几里得算法来计算d。
最后,公钥为(n,e),私钥为(n,d),其中(n,e)对外公开,(n,d)需要保密保存。
RSA运算原理介绍
RSA运算原理介绍
RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,他的加密和
解密使用两个不同的密钥,分别称为公钥和私钥。RSA算法在信息安全领
域广泛应用,特别是在电子商务和在线银行等领域。
RSA算法的安全性基于两个数论的难题:大整数的质因数分解和模指
数运算。质因数分解问题是指将一个非常大的合数分解成其质数因子的乘积,而模指数运算问题是指在给定一个数的模意义下,快速计算出其指数
结果。RSA算法的加密和解密过程如下:
1. 密钥生成:选择两个大素数p和q,并计算它们的乘积n=p*q。选
择一个整数e,使其与(n)互素,且1<e<φ(n),其中φ(n)=(p-1)(q-1)。然后计算e的模φ(n)的乘法逆元d,即e*d ≡ 1(mod φ(n))。公钥
为(n,e),私钥为(n,d)。
2. 加密:对于要加密的明文m,使用公钥(n,e)进行加密运算,加密
后的密文c ≡ m^e(mod n)。密文c可以通过公开的公钥进行传输。
3. 解密:使用私钥(n,d)对密文c进行解密运算,解密后的明文m'
≡ c^d(mod n)。然后得到原始明文m=m'。
RSA算法的安全性基于两个数论难题,质因数分解和模指数运算的困
难性。质因数分解问题是在给定一个合数的情况下,寻找它的质因数的过程,而没有已知的高效算法可以在多项式时间内解决这个问题。模指数运
算问题是在给定一个数的模意义下,通过指数进行计算,而没有已知的高
效算法可以在多项式时间内解决这个问题。
由于这两个数论难题的存在,使用RSA算法可以实现公钥密码体制。
rsa加密算法详解及例题
RSA加密算法详解及例题
RSA加密算法是一种非对称加密算法,其安全性基于对极大整数做因数分解的困难性。以下是RSA加密算法的详解及例题:
1. 密钥生成:
* 随机选择两个质数P和Q,越大越安全。
* 计算它们的乘积N=P*Q。
* 计算欧拉函数φ(N)=(P-1)*(Q-1)。
* 随机选择一个整数E,条件是1<E<φ(N),且E与φ(N)互质。
* 计算E对于φ(N)的模反元素D,使得EDmodφ(N)=1,即D=E-1modφ(N)。
* 公钥为(E, N),私钥为(D, N)。
2. 加解密过程:
* 加密:明文M进行加密后得到密文C,计算公式为C=MemodN。
* 解密:将密文C进行解密后得到明文M,计算公式为M=CdmodN。
例题:在RSA加密体制中,已知素数P=7,Q=11,公钥E=13,试计算私钥D并给出对明文M=5的加密,求其密文。
解:首先,根据上述算法进行密钥生成。根据素数P和Q得到N=77。计算φ(N)=60。因为E小于φ(N)且与φ(N)互质,选择E=13作为公钥。根据公式计算D模反元素得到D=7。现在有公钥(E, N)=(13, 77)和私钥(D, N)=(7, 77)。
接下来,用公钥加密明文M=5得到密文C=5^13mod77=15。所以,密文为15。
此例题仅展示了RSA加密算法的基本原理和步骤,实际应用中需要考虑更多安全因素和操作细节。
rsa算法的原理
rsa算法的原理
RSA算法是一种公钥密码算法,它经常被用于信息安全领域中的加密和数字签名等方面,是目前最广泛使用的公钥加密算法之一。本文将介绍RSA算法的原理,从密钥生成、加密和解密三个方面详细讲解。
一、密钥生成
RSA算法是一种基于大素数因子分解的加密方法,其密钥包括公钥和私钥两部分。公钥由两个参数n和e组成,其中n为两个大质数p和q 的乘积,e为整数且满足1<e<φ(n)且e与φ(n)互质。私钥由两个参数n和d组成,其中n相同,d为整数,满足ed≡1(modφ(n)),
φ(n)=(p-1)(q-1)是欧拉函数。
密钥生成的具体流程如下:
1.选取两个不同的大质数p和q,并计算它们的积n=p*q。
2.计算φ(n)=(p-1)*(q-1)。
3.选取一个大于1且小于φ(n)的整数e,使得e与φ(n)互质。
4.使用扩展欧几里得算法计算出d。具体地,我们需要求出方程
ed=k*φ(n)+1的正整数解d。
5.将n和e组成公钥,n和d组成私钥。
二、加密
RSA算法的加密过程如下:
1.将明文M转化为整数m,确保0 <= m < n。
2.计算密文C = m^e mod n。
其中,C为密文。
三、解密
RSA算法的解密过程如下:
1.将密文C转化为整数c,确保0 <= c < n。
2.计算明文M = c^d mod n。
当然,在实际应用中还需要考虑信息安全领域常常面临的各种攻击手段,比如重放攻击、中间人攻击等等。此外,RSA算法的安全性也与密钥长度有关。通常情况下,我们需要保证密钥长度足够长,这样攻击
rsa算法过程原理
rsa算法过程原理
RSA(Rivest-Shamir-Adleman)是一种常用的非对称加密算法,它是公钥加密的代表之一、RSA算法基于数论中的大数分解问题,其安全性依赖于质因数分解问题的困难性。
RSA算法的过程包括密钥生成、加密和解密三个步骤。下面将详细介绍RSA算法的原理和过程。
1.密钥生成:
(1)选择两个大素数p和q。
(2)计算n=p*q,并得到欧拉函数φ(n)=(p-1)*(q-1)。
(3)选择一个整数e(1<e<φ(n)),使得e与φ(n)互质。e称为公钥指数。
(4)计算d满足 d * e ≡ 1 mod φ(n),d称为私钥指数。
(5)公钥为(n,e),私钥为(n,d)。
2.加密:
假设Bob要给Alice发送一条消息m。
(1)Bob使用Alice的公钥(n, e)将消息m进行加密,计算c ≡ m^e mod n,c为密文。这里的^表示乘方运算。
(2)Bob将密文c发送给Alice。
3.解密:
Alice接收到密文c后,使用自己的私钥(n, d)进行解密。
(1)Alice计算m ≡ c^d mod n,m为明文。实际上,解密过程与加密反过来,即使用私钥的指数d进行幂运算。
下面是对上述步骤进行详细解析:
密钥生成:
在密钥生成过程中,选择两个大素数p和q是RSA算法的基础。这两个素数越大,加密的安全性就越高。通常,选择的素数位数越多,算法越安全,但计算过程也越慢。
加密:
对于Bob要发送给Alice的明文m,Bob使用Alice的公钥(n, e)进行加密。加密过程是通过对明文m进行指数运算来得到密文c。公式为:c ≡ m^e mod n。其中,^表示乘方运算,mod表示模运算。c就是加密后的密文。
简单的rsa加密解密计算
简单的rsa加密解密计算
RSA加密算法是一种非对称加密算法,它使用一对密钥(公钥
和私钥)来加密和解密数据。下面我将简单介绍RSA加密和解密的
计算过程。
1. 生成密钥对,首先,选择两个不同的大质数p和q,并计算
它们的乘积n=pq。然后选择一个整数e,使得e与(p-1)(q-1)互质,并计算出e的模反元素d。公钥是(n, e),私钥是(n, d)。
2. 加密,假设要加密的消息为M,首先将消息M转换为整数m,满足0≤m<n。然后使用公钥(n, e)进行加密,加密后的密文C等于
m的e次方再对n取模,即C≡m^e (mod n)。
3. 解密,接收到密文C后,使用私钥(n, d)进行解密,解密后
的明文M等于C的d次方再对n取模,即M≡C^d (mod n)。
下面我举一个简单的例子来说明RSA加密和解密的计算过程:
假设我们选择两个质数p=11和q=3,计算n=pq=33,然后选择
e=3,并计算d=7。这样我们得到公钥(n, e)=(33, 3)和私钥(n,
d)=(33, 7)。
现在假设要加密的消息为M=5,将其转换为整数m=5。使用公钥进行加密,计算C≡5^3 (mod 33),得到C=5。
接收到密文C=5后,使用私钥进行解密,计算M≡5^7 (mod 33),得到M=5。
因此,我们成功地将消息M=5加密为密文C=5,然后再解密回到原始消息M=5。这就是RSA加密和解密的简单计算过程。
RSA公钥密码算法的加密和解密
(3)发送密文c
解密算法
接收方: (1)接收密文c (2)利用私钥d解密,恢复明文m m≡cd mod n
例子
已知p=3,q=11,明文m. (1) 求密钥; (2) 写出相应的加密算法和解密算法; (3) 对明文m=8加密,解密。 解: n=p×q=33,且(n)=(p-1)(q-1)=20 取e=7,e满足满足1<Βιβλιοθήκη Baidu<(n),且gcd((n),e)=1 可解模方程 ed mod (n)=1, 即 7d mod20=1 得到d=3
公钥:(e, n) =(7, 33) 密钥:(d, n) =(3, 33) 加密算法: 密文c=m7mod33 解密算法: 明文m=c3mod33 对m=8加密 密文 c=87mod33= 2097152 mod33=2 对c=2解密 明文m=23mod33=8
RSA算法中的计算问题
1. RSA的加密与解密过程 RSA的加密、解密过程都为求一个整数的整数次 幂,再取模。如果按其含义直接计算,则中间结 果非常大,有可能超出计算机所允许的整数取值 范围。 而用模运算的性质: (a×b) mod n=[(a mod n)×(b mod n)] mod n 就可减小中间结果
假设m为要传送的报文。
(1)选取两个大素数 p, q (2) 计算n=pq, (n)=(p-1)(q-1) (3) 随机选取e: 1<e<(n),与(n)互素 (4) 使用扩展欧几里德算法计算 即ed = 1 mod (n) (5)以(e,n)为公钥,(d,n)为密钥
RSA加密算法原理
RSA加密算法原理
RSA加密算法是一种非对称密码算法,起源于1977年,由三位数学家Rivest、Shamir和Adleman共同提出。它基于一个简单的数论问题,即将两个大素数相乘容易,但是将其乘积分解成两个大素数却极为困难。
RSA算法要求用户生成一对密钥,包括公钥和私钥。公钥用于加密数据,私钥用于解密加密后的数据。下面我将详细介绍RSA加密算法的原理及过程。
1. 密钥生成过程:
(1)选择两个不同的大素数p和q。
(2)计算n = p * q。
(3)计算欧拉函数φ(n) = (p-1) * (q-1)。
(4)选择一个整数e,使得1 < e < φ(n),且e与φ(n)互质。
(5)通过计算求得e关于φ(n)的模反元素d,即满足e * d ≡ 1 mod φ(n)。
(6)将n和e组成公钥(n,e),将n和d组成私钥(n,d)。
2. 数据加密过程:
(1)将待加密的数据转换成对应的整数m。
(2)计算密文c = m^e mod n。
(3)将密文c作为加密后的数据输出。
3. 数据解密过程:
(1)接收到密文c后,将c作为待解密的数据。
(2)计算明文m = c^d mod n。
(3)将明文m作为解密后的数据输出。
通过上述步骤,我们实现了RSA加密算法的原理。需要注意的是,RSA加密算法的安全性依赖于质因数分解的困难性,即将n分解成p
和q。只要质因数分解的难题没有被有效地攻破,RSA算法便是安全的。
总结:
RSA加密算法是一种非对称密码算法,通过使用公钥加密、私钥解
密的方式来保障数据的安全性。它的原理基于两个大素数相乘容易,
简述rsa加密算法的过程
简述rsa加密算法的过程:
RSA是一种非对称加密算法,其加密和解密过程分别使用公钥和私钥。下面是RSA加密算法的过程:
选择两个质数p和q,计算它们的乘积N=p*q。选择一个整数e,使得1<e<φ(N),且e和φ(N)互质,其中φ(N)为N的欧拉函数。
计算d,使得d是e关于模φ(N)的乘法逆元,即d*e ≡ 1 (mod φ(N))。
将e和N组成公钥,将d和N组成私钥。
对于明文M,将其加密为密文C=M^e (mod N)。
对于密文C,将其解密为明文M=C^d (mod N)。
RSA加密算法的安全性基于大质数分解的困难性。因为RSA的加密和解密都需要对大数进行乘方和取模运算,所以RSA的加解密速度较慢,不适合对大量数据进行加密。
rsa 公钥密码算法
rsa 公钥密码算法
摘要:
一、RSA 公钥密码算法简介
二、RSA 算法的生成过程
1.随机生成两个素数P 和Q
2.计算N、E 和D
三、RSA 算法的加密和解密过程
1.加密过程
2.解密过程
四、RSA 算法的Java 实现
正文:
RSA 公钥密码算法是一种非常常见的加密算法,其安全性高、可靠性好,被广泛应用于各种网络通信和数据存储场景。下面我们将详细介绍RSA 公钥密码算法的生成过程、加密和解密过程以及Java 实现。
一、RSA 公钥密码算法简介
RSA 公钥密码算法是一种非对称加密算法,即加密和解密所使用的密钥不同。它由美国计算机科学家RSA(Rivest-Shamir-Adleman)三人于1977 年提出,是一种基于大数因子分解的算法。
二、RSA 算法的生成过程
RSA 算法的生成过程主要分为以下几个步骤:
1.随机生成两个素数P 和Q
在RSA 算法中,我们需要选择两个大素数P 和Q,这两个素数是用来生成公钥和私钥的。素数是指只能被1 和本身整除的正整数,且越大越难被分解。
2.计算N、E 和D
根据P 和Q,我们可以计算出N、E 和D。其中,N = P * Q,E 是一个与T(T = P * Q - 1)互质的正整数,且E 小于T;D 是满足D * E mod T = 1 的整数。
3.RSA 算法的加密和解密过程
RSA 算法的加密和解密过程分为以下两个步骤:
1.加密过程
在加密过程中,发送方使用接收方的公钥(N、E)对明文进行加密。加密公式为:M = C * E mod N,其中M 为密文,C 为明文。
RSA加密算法及实现
RSA加密算法及实现
RSA 是一种非对称加密算法,由Rivest、Shamir 和Adleman 三位数
学家于1977年提出,现在广泛应用于电子邮件加密、数字签名和安全传
输等领域。RSA 算法基于两个大素数的乘积难以分解的特性,实现了安全
的加密和解密过程。
RSA算法的核心原理是利用数论中的欧拉函数、模逆和模幂运算。下
面将详细介绍RSA算法的加密和解密流程。
1.生成密钥对
首先选择两个不同的大素数p和q,计算它们的乘积n=p*q。然后计
算欧拉函数φ(n)=(p-1)*(q-1)。选择一个与φ(n)互质的整数e,作为
公钥的指数。再利用模逆运算求解整数d,使得(d*e)%φ(n)=1,d即为私
钥的指数。
2.加密过程
假设要加密的消息(明文)为m,公钥为(n,e)。将明文转换成整数M,并满足0≤M<n。加密过程即为计算密文C=M^e%n,然后将密文发送给接收者。
3.解密过程
接收者使用私钥(n,d)进行解密。将密文C转换成整数,并计算明文
M=C^d%n。最后将整数M转换成消息,并得到解密后的明文。
RSA算法的安全性基于分解大整数n的困难性,如果有人能够有效地
分解n,并得到p和q,那么整个算法的安全性将被破坏。目前,分解大
整数依然是一个非常耗费计算资源的问题,因此RSA算法在理论上是安全的。
实现 RSA 加密算法需要涉及大数运算和模幂运算等复杂的数学运算。下面是一个简化版的 RSA 加密算法的 Python 代码实现:
```python
import random
#扩展欧几里得算法求解模逆
def extended_gcd(a, b):
RSA加密解密算法
RSA加密解密算法
RSA(Rivest–Shamir–Adleman)加密算法是一种非对称加密算法,也是目前最常用的公钥加密算法之一、它是由Ron Rivest、Adi Shamir 和Leonard Adleman于1977年共同开发的,取名来自他们三个人的姓氏的首字母。
RSA算法的安全性建立在两个大素数难因分解的理论上,即若一个非常大的整数,其因数分解为两个素数的乘积,那么要分解这个大整数就很困难。该算法的基本原理是选取两个大素数p和q,并计算得到N=p*q,将N作为公钥的一部分。公开N和一个加密指数e,而私钥则包含了p、q 和一个解密指数d。加密时,消息经过加密指数e进行加密得到密文,解密时利用解密指数d对密文进行解密。只有知道私钥的人才能解密得到原始消息。
具体的加密过程如下:
1.选择两个不同的大素数p和q。
2.计算N=p*q。
3.计算φ(N)=(p-1)*(q-1),φ(N)即N的欧拉函数值。
4.选择一个与φ(N)互质的加密指数e,其中1<e<φ(N)。
5.计算解密指数d,使得(e*d)%φ(N)=1
6.公钥为(e,N),私钥为(d,N)。
7.将明文m转化为整数m,确保m小于N。
8.加密密文c=m^e%N。
9.解密明文m=c^d%N。
RSA算法的安全性取决于分解大整数的难度,目前没有快速的算法能够在合理的时间内分解大整数。因此,只要选择足够大的素数p和q,RSA算法就足够安全。
RSA算法在实际应用中起到了重要的作用。它广泛应用于数字签名、密钥交换、加密通信等领域。它通过使用不同的指数对数据进行加密和解密,实现了安全的通信。同时,RSA算法也具有可逆性,在现实世界中起到了非常重要的作用。
RSA加密原理
RSA加密原理
RSA加密算法是一种非对称加密算法,它是由三位数学
家――Rivest、Shamir和Adleman所发明的,因此得名为RSA算法。RSA算法在密码学中有着广泛的应用,特别是在保证数据传输的安全性方面起着重要的作用。本文将详细介绍RSA加密原理以及其应用。
一、RSA算法基本原理
RSA算法的基本原理是基于大数的因数分解。其中,生成RSA密钥的过程分为密钥生成、加密和解密三个步骤。
1. 密钥生成:
密钥生成是RSA加密算法的第一步,主要包括选择两个不同的大素数p和q,计算n = p * q,并求解与(n)互质的一个整数e。其中,n 为公开的大整数,e为加密密钥。
2. 加密:
加密过程是RSA算法的第二步,主要利用公钥(n, e)对待加密的信息进行加密。具体的加密过程是将明文M转化为整数m,通过加密公式C ≡ m^e (mod n)将明文加密成密文。
3. 解密:
解密过程是RSA算法的第三步,主要利用私钥(n, d)对密文进行解密。具体的解密过程是将密文C通过解密公式M ≡ C^d (mod n)将密文解密成明文m。
通过以上三个步骤,RSA算法实现了加密和解密的过程。其中,公钥(n, e)可以公开,而私钥(n, d)必须保密。
二、RSA算法优势和应用
1. 优势:
RSA算法具有以下几个优势:
1) 安全性高:RSA算法的安全性基于大数的因数分解,目前任何有效的破译RSA算法的方法都需要耗费非常巨大的计算资源。
2) 高效性:RSA算法的加解密速度非常快,尤其适合对短数据进行加密。
3) 可靠性:RSA算法经过了广泛的应用和严格的测试,其算法的可靠性得到了验证。
RSA加密解密算法
RSA加密解密算法
RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,由三位密码
学家发明。RSA加密算法能够实现数据的加密、解密和数字签名的功能,
广泛应用于信息安全领域。
RSA算法的基本原理是利用大数分解的困难性来保证数据的安全性。
它采用了一对公钥和私钥来进行加密和解密操作。公钥可以公开给他人,
而私钥必须由加密方保密。具体步骤如下:
1. 密钥生成:选择两个大素数p和q,计算n = p * q,计算欧拉函
数ϕ(n) = (p-1) * (q-1),选择一个与ϕ(n)互质的整数e作为公钥,计
算私钥d使得(e * d) mod ϕ(n) = 1
2. 加密:加密方使用公钥(e,n)对明文进行加密。明文m需小于n,
计算密文c = m^e mod n。
3. 解密:解密方使用私钥(d,n)对密文进行解密。计算明文m = c^d mod n。
RSA算法的安全性基于大数分解问题的困难性。大数分解是指将一个
大素数分解成两个素数的乘积。目前最快的分解算法是基于数域筛选的RSA整数分解算法,其时间复杂度为O(exp((64/9)^(1/3) * (ln N)^(1/3) * (ln ln N)^(2/3))),其中N为待分解的大数。根据目前的计算能力,RSA算法在合适的密钥长度下是足够安全的。
除了加密和解密,RSA算法还可以用于数字签名。数字签名可以实现
身份认证和数据完整性验证。签名方使用私钥对消息进行签名,验证方使
用公钥进行验证。签名的过程如下:
1. 签名:签名方使用私钥(d,n)对消息进行签名。计算签名值s = m^d mod n。
(完整word版)RSA加密算法加密与解密过程解析
RSA加密算法加密与解密过程解析
1.加密算法概述
加密算法根据内容是否可以还原分为可逆加密和非可逆加密。
可逆加密根据其加密解密是否使用的同一个密钥而可以分为对称加密和非对称加密。
所谓对称加密即是指在加密和解密时使用的是同一个密钥:举个简单的例子,对一个字符串C做简单的加密处理,对于每个字符都和A做异或,形成密文S。
解密的时候再用密文S和密钥A做异或,还原为原来的字符串C。这种加密方式有一个很大的缺点就是不安全,因为一旦加密用的密钥泄露了之后,就可以用这个密钥破解其他所有的密文。
非对称加密在加密和解密过程中使用不同的密钥,即公钥和私钥。公钥用于加密,所有人都可见,私钥用于解密,只有解密者持有。就算在一次加密过程中原文和密文发生泄漏,破解者在知道原文、密文和公钥的情况下无法推理出私钥,很大程度上保证了数据的安全性。
此处,我们介绍一种非常具有代表性的非对称加密算法,RSA加密算法。RSA
算法是1977年发明的,全称是RSA Public Key System,这个Public Key 就是指的公共密钥。
2.密钥的计算获取过程
密钥的计算过程为:首先选择两个质数p和q,令n=p*q。
令k=ϕ(n)=(p−1)(q−1),原理见4的分析
选择任意整数d,保证其与k互质
取整数e,使得[de]k=[1]k。也就是说de=kt+1,t为某一整数。
3.RSA加密算法的使用过程
同样以一个字符串来进行举例,例如要对字符串the art of programming 进行加密,RSA算法会提供两个公钥e和n,其值为两个正整数,解密方持有一个私钥d,然后开始加密解密过程过程。
rsa算法原理
rsa算法原理
RSA(Rivest-Shamir-Adleman)算法是一种非对称加密算法,它具有较高的安全性、较高的效率、采用较简单的计算机运行体系结构,所以在网络信息加密中得到了广泛应用。
RSA算法是由Ron Rivest、Adi Shamir和Len Adleman于1977年提出,它基于一个十分简单的数论事实:大素数的乘积仍然是两个大素数的乘积,算法的入口参数是两个大素数:p和q,它们的乘积可以简单的计算为N=p*q,因此,N被称为模数。
RSA算法的实现要求一个公钥和一个私钥,具体的加密和解密过程如下:
(1)加密:
首先,求e和d,其中,e是公钥,d是私钥。e和d满足e*d=1 mod(p-1)*(q-1)),其中,mod是模运算符号。
接着,加密计算过程:M=P^e(modN),其中,P是明文,M是密文,N是模数。
(2)解密:用私钥d解密:P=M^d(modN)
RSA算法的安全特性主要在于求解出私钥d是一个无法实现的极其困难的任务。确切地说,求解e和d时,需要求解的数学问题是求解模反元素的问题,因此求解d是一个极其复杂的数论问题,只有当p、q非常大时,才可以构成比较大的N,从而使加密过程更加安全。
因此,RSA常被用作电子商务、数字签名、数据加密等安全保护工作,有句名言“穷则思变”,人类无时无刻都在思考新的想法以改
善它们的生活。RSA算法的发明是这一想法的具体应用,这一发明大大提高了网络安全的可靠性,使得电子商务的发展走向了更安全的道路。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RSA加密算法加密与解密过程解析
1.加密算法概述
加密算法根据内容是否可以还原分为可逆加密和非可逆加密。
可逆加密根据其加密解密是否使用的同一个密钥而可以分为对称加密和非对称加密。
所谓对称加密即是指在加密和解密时使用的是同一个密钥:举个简单的例子,对一个字符串C做简单的加密处理,对于每个字符都和A做异或,形成密文S。
解密的时候再用密文S和密钥A做异或,还原为原来的字符串C。这种加密方式有一个很大的缺点就是不安全,因为一旦加密用的密钥泄露了之后,就可以用这个密钥破解其他所有的密文。
非对称加密在加密和解密过程中使用不同的密钥,即公钥和私钥。公钥用于加密,所有人都可见,私钥用于解密,只有解密者持有。就算在一次加密过程中原文和密文发生泄漏,破解者在知道原文、密文和公钥的情况下无法推理出私钥,很大程度上保证了数据的安全性。
此处,我们介绍一种非常具有代表性的非对称加密算法,RSA加密算法。RSA
算法是1977年发明的,全称是RSA Public Key System,这个Public Key 就是指的公共密钥。
2.密钥的计算获取过程
密钥的计算过程为:首先选择两个质数p和q,令n=p*q。
令k=ϕ(n)=(p−1)(q−1),原理见4的分析
选择任意整数d,保证其与k互质
取整数e,使得[de]k=[1]k。也就是说de=kt+1,t为某一整数。
3.RSA加密算法的使用过程
同样以一个字符串来进行举例,例如要对字符串the art of programming 进行加密,RSA算法会提供两个公钥e和n,其值为两个正整数,解密方持有一个私钥d,然后开始加密解密过程过程。
1. 首先根据一定的规整将字符串转换为正整数z,例如对应为0到36,转化后形成了一个整数序列。
2. 对于每个字符对应的正整数映射值z,计算其加密值M=(N^e)%n. 其中N^e表示N的e次方。
3. 解密方收到密文后开始解密,计算解密后的值为(M^d)%n,可在此得到正整数z。
4. 根据开始设定的公共转化规则,即可将z转化为对应的字符,获得明文。
4.RSA加密算法原理解析
下面分析其内在的数学原理,说到RSA加密算法就不得不说到欧拉定理。
欧拉定理(Euler’s theorem)是欧拉在证明费马小定理的过程中,发现的一个适用性更广的定理。
首先定义一个函数,叫做欧拉Phi函数,即ϕ(n),其中,n是一个正整数。ϕ(n)=总数(从1到n−1,与n互质整数)
比如5,那么1,2,3,4,都与5互质。与5互质的数有4个。ϕ(5)=4再比如6,与1,5互质,与2,3,4并不互质。因此,ϕ(6)=2
对于一个质数p来说,它和1, 2, 3, …, p – 1都互质,所以ϕ(p)=p−1。比如ϕ(7)=6,ϕ(11)=10
欧拉定理叙述如下:
欧拉定理:如果n是一个正整数,a是任意一个非0整数,且n和a互质。那么,a^ϕ(n)−1可以被n整除。
推论1:如果m和n是互质的正整数。那么,ϕ(mn)=ϕ(m)ϕ(n)
推论2:[ab]n=[[a]n[b]n]n
证明:假设a和b除以n的余数为c1,c2。a和b可以写成
a=nt1+c1,b=nt2+c2。那么,ab=n2t1t2+nt1c2+nt2c1+c1c2。因此ab 除以n的余数为c1c2。即[ab]n=[a]n[b]n。
有以上定理后,由此可以推导出RSA算法的内在原理。
根据欧拉定理,对于任意z,如果z与n互质,那么:
[z^ϕ(n)]n=[z^k]n=[1]n
因此,
[z^(de)]n=[z^(kt+1)]n=[z^(kt)*z]n=[z^kt]n*[z]n= [z]n 因为[z^k]n = [1]n
上面主要使用了de=kt+1以及推论2。也就是说:
[z^(de)]n=[z]n
根据2的推论,有
([z^e]n)^d=[z]n
即d个余数相乘,因为其乘积可能大于n,所以由[ab]n=[[a]n[b]n]n,例如令a和b都为5,n为3,可知该结论
故上式可描述为[([z^e]n)^d]n=[z]n=z,就是原数字乘方求余数,然后再乘方求余数后得到原来数字的过程,得证。
公开的加密方式,私有的解密方式。RSA安全的关键在于很难对一个大的整数进行因子分解。
5.RSA加密的缺点
1)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。2)安全性,RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA 的难度与大数分解难度等价,而且密码学界多数人士倾向于因子分解不是NP问题。
3)速度太慢,由于RSA 的分组长度太大,为保证安全性,n 至少也要600 bitx以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。