RSA

合集下载

RSA运算原理介绍

RSA运算原理介绍

RSA运算原理介绍RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,主要用于保护通信和数据的安全性。

它是由Ron Rivest、Adi Shamir和Leonard Adleman于1977年合作开发的,被广泛应用于互联网中的安全协议,如HTTPS、S/MIME和SSH等。

RSA算法基于两个数论原理:欧拉函数和大素数的难以分解性。

其基本原理如下:1.密钥的生成:(1)选择两个大素数p和q,这两个数的乘积n被称为模数。

(2)计算n的欧拉函数φ(n)=(p-1)(q-1)。

(4)计算中国剩余定理的参数:计算 d = e的模φ(n)的乘法逆元。

也就是说,找到一个整数d,满足ed ≡ 1 (mod φ(n))。

(5)至此,我们得到了公钥(n,e)和私钥(n,d)。

2.加密过程:(1)对于待加密的明文M,将其转化为整数m。

(2)计算密文c,通过公式:c ≡ m^e (mod n)。

其中^是表示幂运算,mod表示取模运算。

(3)将密文c发送给接收方。

3.解密过程:(1)接收到密文c。

(2)利用私钥(n, d)计算明文m,通过公式:m ≡ c^d (mod n)。

(3)将明文m转换为原始明文M。

RSA算法的安全性基于两个数论问题的困难性:(1)大整数分解问题:将一个大的合数n分解为两个素数p和q的乘积。

这个问题在现有的算法中是非常耗时的,因此大的素数对是安全性的基础。

(2)模取幂运算问题:通过已知的底数、指数和模数,计算模取幂运算的结果是容易的。

但如果只给定模和幂,计算底数是困难的。

RSA加密算法通过将消息的整数表示与指数相乘并取模,从而保护了消息的机密性。

RSA算法的性能因素:(1)密钥的长度:一般来说,密钥越长,RSA算法的安全性越强,但加解密的性能也会降低。

(2)模的大小:模的大小应该适当选择,过小会导致安全性降低,过大会增加计算开销。

(3)加解密的性能:由于RSA算法的性能较差,所以通常会使用RSA与对称加密算法(如AES)结合,同时保证安全性和效率。

rsa算法基本原理

rsa算法基本原理

rsa算法基本原理RSA算法基本原理RSA是一种非对称加密算法,它的基本原理是利用大素数的因数分解困难性来实现加密和解密的过程。

RSA算法由三个步骤组成:密钥生成、加密和解密。

1. 密钥生成RSA算法中,首先需要生成一对密钥:公钥和私钥。

公钥用于加密数据,私钥用于解密数据。

密钥的生成过程如下:1.1 选择两个大素数p和q,并计算它们的乘积n=p*q。

n的长度决定了RSA算法的安全性。

1.2 计算n的欧拉函数φ(n)=(p-1)*(q-1)。

1.3 选择一个与φ(n)互质的整数e,1 < e < φ(n)。

1.4 计算e关于φ(n)的模反元素d,即满足e*d ≡ 1 (mod φ(n))的整数d,1 < d < φ(n)。

1.5 公钥为(n, e),私钥为(n, d)。

2. 加密加密过程是指使用公钥对原始数据进行加密的过程。

加密过程如下:2.1 将原始数据转换为整数m,满足0 ≤ m < n。

2.2 计算密文c ≡ m^e (mod n),即对m进行模n的指数操作。

2.3 密文c即为加密后的数据。

3. 解密解密过程是指使用私钥对密文进行解密的过程。

解密过程如下:3.1 计算明文m ≡ c^d (mod n),即对密文c进行模n的指数操作。

3.2 明文m即为解密后的数据。

RSA算法的安全性基于大整数的因子分解问题的困难性,因为在当前计算能力下,对于非常大的整数进行因子分解是非常耗时的。

这使得RSA算法在现实应用中具有较高的安全性。

除了加密和解密外,RSA算法还可以用于数字签名和密钥协商等领域。

数字签名是指用私钥对数据进行签名,然后用公钥进行验证,以确保数据的完整性和来源可靠性。

密钥协商是指两个通信方通过交换公钥来协商出一个共享的对称密钥,以便进行后续的加密通信。

总结一下,RSA算法是一种基于大整数的非对称加密算法,利用大素数的因子分解困难性来实现数据的加密和解密。

它的安全性建立在大整数因子分解问题的困难性上,适用于保护数据的机密性、完整性和来源可靠性。

RSA公钥密码体制简介

RSA公钥密码体制简介
当要对明文进行加密时,可先进行预处理, 计算出m2、m3等,这种方法我们称之为窗口法。
32
例:
计算: 152013(mod 2539) 13 23 1 22 0 2 1 1101 B
(e3 , e2 , e1, e0 ) (1,1,0,1)
152013 mod2539
(((1520e3 )2 1520e2 )2 1520e1 )2 1520e0 (mod 2539) ((15202 1520)2 15200 )2 1520 (mod 2539)
14
RSA算法论证
假设截获密文C,从中求出明文M。他知道 M≡Cd mod n ,
因为n是公开的,要从C中求出明文M,必须先求 出d,而d是保密的。但他知道,
ed≡1 mod φ(n), e是公开的,要从中求出d,必须先求出φ(n),而 φ(n)是保密的。但他又知道,
φ(n)=(p-1)(q-1),
9
RSA算法论证
于是,M tφ(n) =bq+1,其中b为某整数。 两边同乘M, M tφ(n)+1 =bqM+M 。 因为M=ap,故 M tφ(n)+1 =bqap+M =abn+M 。 取模n得, M φ(n)+1 =M mod n 。
10
RSA算法论证
第二种情况:M=0 当M=0时,直接验证,可知命题成立。
加密过程:c=me mod n 解密过程:m=cd mod n
3
2、工作原理
定义:任给一个正整数m,如果用m去除任意两个整 数a、b所得的余数相同,称a、b对模m同余。记 为: a bmodm,若余数不同,则a、b对模m不同余。 记为: a b modm。
定理: a bmodm ,当且仅当m|(a-b)。

RSA和DES加密算法详解

RSA和DES加密算法详解
数字签名
RSA算法可以用于生成数字签名,验证数据的完整性和来源,确保数据在传输过程中未 被篡改或伪造。
密钥管理
RSA算法可以用于密钥分发和交换,确保通信双方能够安全地共享密钥,进行加密通信。
DES的应用场景
保护金融交易
DES加密算法曾广泛应用于金融交易中,如 信用卡交易和银行转账,保护敏感信息不被 非法获取。
加密过程
将明文转换为数字后,使用公钥(e,n)进行加密,得到密文。解密过程则使用私钥(d,n)进行解密,还原出明文。
RSA算法的安全性
安全性基于大数因子分解
RSA算法的安全性主要基于大数因子分解的困难性。即使攻击者知道了公钥和密文,也很难通过计算 得到原始的明文。
密钥长度决定安全性
RSA算法的安全性取决于密钥长度。一般来说,密钥长度越长,RSA算法的安全性就越高。目前常用 的RSA密钥长度为2048位,被认为是足够安全的。
缺点
01
计算开销大
RSA加密算法相对于DES加密算法需要更多的计算资源和时间,因此在
处理大量数据时可能效率较低。
02
密钥长度较长
为了达到足够的安全强度,RSA加密算法通常需要较长的密钥长度(例
如2048位),这会增加实现和存储密钥的难度和成本。
03
可能遭受侧信道攻击
虽然RSA加密算法本身不容易遭受侧信道攻击,但在某些实现中可能会
暴露密钥信息,从而遭受攻击。
05
DES加密算法的优缺点
优点
安全性高
DES加密算法使用56位密钥,在256次试验中密和解密过程中速度较 快。
易实现
DES算法易于理解和实现,因此在许多编程语言中都 有现成的库可供使用。
缺点
密钥长度短

RSA加密算法

RSA加密算法

RSA加密算法RSA 加密算法是一种非对称加密算法,由三位数学家 Rivest、Shamir 和 Adleman 共同提出,采用两个不同的密钥进行加解密。

RSA 算法主要用于保护数据的机密性和完整性,在互联网通信、电子商务、数字签名等领域得到广泛应用。

1.选择两个大的质数p和q,计算n=p*q。

n被称为模数,p和q称为密钥生成的一部分,需要保密。

2.根据欧拉函数φ(n)的性质,计算φ(n)=(p-1)*(q-1)。

3. 选择一个整数 e,使得1 < e < φ(n) 且gcd(e, φ(n)) = 1,e 称为公钥指数。

4. 计算关于模φ(n) 的 e 的乘法逆元素 d,即d * e ≡ 1 (mod φ(n))。

d 称为私钥指数。

5.公钥是(n,e),私钥是(n,d),公钥可以公开,私钥需要保密。

6. 加密过程:将待加密的明文 M 转化为整数 m,在模数 n 下,计算密文 C = m^e mod n。

7. 解密过程:将密文 C 转化为整数 c,在模数 n 下,计算明文 M = c^d mod n。

RSA算法的优点是:1.加密和解密过程分别使用不同的密钥,提高了安全性。

2.非常适合进行数字签名和数字证书的领域应用,能有效抵御冒充和篡改。

3.算法存在的数学难题使得破解困难,强大的安全性能。

然而,RSA算法也有一些缺点:1.加密和解密过程速度较慢,特别是处理大数据量时。

2.密钥的生成和管理需要一定的计算资源和复杂性。

3.对于特定的攻击,如侧信道攻击和选择密码攻击等,RSA算法可能存在风险。

为了提高RSA算法的性能和安全性,通常结合其他的密码学技术,如组合RSA和对称加密算法构成混合加密体制,以克服各自的缺点。

总的来说,RSA加密算法是一种安全可靠的非对称加密算法,具有广泛的应用领域和重要的实际价值,为保障数据的机密性和完整性提供了有效的保护措施。

DES和RSA两种加密算法

DES和RSA两种加密算法

DES和RSA两种加密算法DES(Data Encryption Standard)和RSA(Rivest, Shamir, 和Adleman)是两种广泛使用的加密算法,被用于保护敏感信息的安全性。

它们具有不同的加密和解密过程,并在不同应用场景中发挥作用。

DES是一种对称加密算法,它使用相同的密钥进行加密和解密操作。

它采用了经典的分组密码结构,将明文分成固定大小的块,并进行相同数量的加密和解密轮。

DES密钥的长度为56位,被分为64位进行轮次加密。

由于密钥长度较短,使得DES对于现代密码分析算法的攻击比较脆弱。

因此,DES已经被更安全和更可靠的加密算法所替代。

RSA是一种非对称加密算法,它使用两个密钥,一个公钥和一个私钥。

公钥用于加密数据,而私钥用于解密数据。

RSA的安全性基于质因数分解问题的困难性,即将大质数做乘法分解的困难性。

RSA密钥的长度可变,通常在1024位到4096位之间。

RSA算法广泛应用于数字签名、密钥交换和安全通信等领域。

尽管DES和RSA都是加密算法,但它们适用的场景和特点有所不同。

首先,DES是一种对称加密算法,而RSA是一种非对称加密算法。

这意味着在使用DES时,相同的密钥用于加密和解密,而在使用RSA时,不同的密钥用于加密和解密。

这使得RSA在密钥管理和分发方面更加便捷,但加解密的性能开销更大。

其次,DES的密钥长度较短,使得它更易受到暴力破解和密码分析的攻击。

相比之下,RSA的安全性基于质因数分解问题,要求较长的密钥长度,增加了攻击者找到合适的密钥的难度。

此外,DES和RSA在加密速度上也存在差异。

由于DES是对称加密算法,它的加密和解密速度通常较快。

相比之下,由于RSA是非对称加密算法,它的加密速度较慢。

这使得DES通常适用于要求高速加密的场景,而RSA适用于安全性要求较高的场景。

最后,DES和RSA在应用领域上有所不同。

由于DES已经被认为不再安全,它主要应用于旧系统或需要与遗留系统兼容的场景。

rsa密钥交换算法

rsa密钥交换算法

rsa密钥交换算法RSA密钥交换算法RSA(Rivest-Shamir-Adleman)密钥交换算法是一种非对称加密算法,可用于在不安全的网络环境中进行安全的数据传输。

该算法是由Ron Rivest、Adi Shamir和Leonard Adleman于1977年共同提出的,是目前应用最广泛的公钥加密算法之一。

RSA算法的基本原理是利用大素数的因子分解问题的困难性来保证数据传输的安全性。

在RSA算法中,每个参与者(通常是客户端和服务器)都拥有一对密钥,分别为公钥和私钥。

公钥可以公开给其他参与者,而私钥则必须严格保密。

公钥用于加密数据,私钥用于解密数据。

RSA密钥交换算法的过程如下:1. 生成密钥对:首先,参与者需要生成一对密钥,这对密钥是通过选择两个大素数p和q,并计算出相应的公钥和私钥得到的。

其中,p和q是保密的,而公钥和私钥可以公开和保密。

2. 加密数据:发送方使用接收方的公钥对数据进行加密。

具体而言,发送方将明文数据转换为一个数值,并使用接收方的公钥对该数值进行幂模运算,得到密文数据。

这样,即使敌方截获了密文数据,也无法解密得到原始数据。

3. 解密数据:接收方使用自己的私钥对密文数据进行解密。

具体而言,接收方使用私钥对密文数据进行幂模运算,得到原始数据的数值表示。

然后,接收方将该数值转换为原始数据。

4. 完成数据传输:接收方成功解密密文数据后,即可获得原始数据。

这样,通过RSA密钥交换算法,参与者可以在不安全的网络环境中安全地进行数据传输。

RSA算法的安全性基于两个数的大数分解问题的困难性。

即使在现代计算机中,对于大素数的因子分解问题也是非常耗时的。

因此,通过选择足够大的素数,RSA算法可以提供足够强的安全性。

然而,RSA算法也存在一些安全性问题。

首先,如果生成密钥对的过程中选择的素数不够随机或不够大,可能会导致密钥的安全性降低。

其次,如果私钥泄露,攻击者可以使用私钥对密文数据进行解密,从而获取原始数据。

RSA加密算法及实现

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 代码实现:```pythonimport random#扩展欧几里得算法求解模逆def extended_gcd(a, b):if b == 0:return a, 1, 0gcd, x, y = extended_gcd(b, a % b)return gcd, y, x - (a // b) * y#计算模幂运算def mod_exp(a, b, n):result = 1while b > 0:if b % 2 == 1:result = (result * a) % na=(a*a)%nb//=2return result#生成密钥对def generate_keys(:p = random.randint(100, 1000)q = random.randint(100, 1000)while p == q or not is_prime(p) or not is_prime(q): p = random.randint(100, 1000)q = random.randint(100, 1000)n=p*qphi = (p - 1) * (q - 1)e = random.randint(2, phi - 1)gcd, d, _ = extended_gcd(e, phi)#确保d为正数if d < 0:d += phireturn (n, e), (n, d)#加密过程def encrypt(message, public_key):n, e = public_keym = int.from_bytes(message.encode(, 'big')c = mod_exp(m, e, n)return c#解密过程def decrypt(ciphertext, private_key):n, d = private_keym = mod_exp(ciphertext, d, n)message = m.to_bytes((m.bit_length( + 7) // 8, 'big').decode return message#判断一个数是否为素数def is_prime(n):if n <= 1:return Falsefor i in range(2, int(n ** 0.5) + 1):if n % i == 0:return Falsereturn True#示例运行代码if __name__ == '__main__':public_key, private_key = generate_keysmessage = "Hello, RSA!"ciphertext = encrypt(message, public_key)plaintext = decrypt(ciphertext, private_key)print("Public key:", public_key)print("Private key:", private_key)print("Ciphertext:", ciphertext)print("Decrypted plaintext:", plaintext)```以上代码是一个简单的实现,仅用于理解RSA加密算法的基本原理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三步,计算n的欧拉函数φ(n)。
根据公式: φ(n) = (p-1)(q-1) 我们算出φ(3233)等于60×52,即3120。
第四步,随机选择一个整数e,条件是 1< e < φ(n),且e与φ(n) 互质。
我们就在1到3120之间,随机选择了17。
第五步,计算e对于φ(n)的模反元素d。
ed ≡ 1 (mod φ(n)) 已知 e=17, φ(n)=3120 即17*d ≡ 1 (mod 3120) 即17d + 3120t = 1 可以通过欧几里德扩展公式求得此处省略具体过 程。总之,我们算出一组整数解为 (d,t)=(2753,15),即 d=2753。 至此所有计算完成。
(kp)q-1 ≡ 1 (mod q); (a=kp,n=q) 进一步得到 [(kp)q-1]h(p-1) ≡ 1 (mod q) [(kp)q-1]h(p-1) × kp ≡ kp (mod q) (kp)h(q-1)(p-1)+1 ≡ kp (mod q) 因为ed = hφ(n)+1 = h(p-1)(q-1) 即 (kp)ed ≡ kp (mod q) => (kp)ed – kp = tq 将它改写成下面的等式 (kp)ed = tq + kp 又因为kp与q互质 这时t必然能被p整除(两边都要有p) ,即 t=t'p (kp)ed = t'pq + kp 因为 m=kp,n=pq,med = t'n + m 所以 med ≡ m (mod n) 原式得到证明。
如果两个正整数a和n互质,那么一定可以找 到整数b,使得 成立 b就叫做a的“模反元素“(b是a对模n的乘法 逆元)
比如,3和11互质,那么3的模反元素就是4,因为 (3 × 4)-1 可以被11整除。显然,模反元素不止一个, 4加减11的整数 倍都是3的模反元素 {...,-18,-7,4,15,26,...},即如果b是a的模 反元素,则 b+kn 都是a的模反元素。
可是,大整数的因数分解,是一件非常困难的事 情。目前,除了暴力破解,还没有发现别的有效 方法。 举例来说,你可以对3233进行因数分解(61×53), 但是你没法对下面这个整数进行因数分解。 12301866845301177551304949 58384962720772853569595334 79219732245215172640050726 36575187452021997864693899 56474942774063845925192557 32630345373154826850791702 61221429134616704292143116 02221240479274737794080665 351419597459856902143413
欧拉定理可以用来证明模反元素必然存在。
有了这些知识,我们可以开始RSA算法
第一步,随机选择两个不相等的质数p和q。 我们选择了61和53。(实际应用中,这两个 质数越大,就越难破解。) 第二步,计算p和q的乘积n。 我们把61和53相乘。 n = 61×53 = 3233 n的长度就是密钥长度。3233写成二进制是 110010100001,一共有12位,所以这个密 钥就是12位。实际应用中,RSA密钥一般 是1024位,重要场合则为2048位。
欧拉函数的用处在于欧拉定理。“欧拉定 理” 指的是: 如果两个正整数a和n互质,则n的欧拉函数 φ(n) 可以让下面的等式成立:
欧拉定理有一个特殊情况。 假设正整数a与质数p互质,因为质数p的φ(p) 等于p-1,则欧拉定理可以写成
这就是著名的费马小定理,它是欧拉定理的特例。
乘法逆元(模返函数)
公钥(n,e) 只能加密小于n的整数m,那么如 果要加密大于n的整数,该怎么办?有两种 解决方法:一种是把长信息分割成若干段 短消息,每段分别加密;另一种是先选择 一种"对称性加密算法"(比如DES),用这种 算法的密钥加密信息,再用RSA公钥加密 DES密钥。
私钥解密的证明
证明这个式子 cd ≡ m (mod n) 证:根据加密规则:me ≡ c (mod n) c可以写成这样的形式:c = me - kn 将c代入要证的式子得(me - kn)d ≡ m (mod n) 它等同于求证 med ≡ m (mod n) 根据e对于φ(n)的模反元素ed ≡ 1 (mod φ(n)) 所以 ed = hφ(n)+1 将ed代入: mhφ(n)+1 ≡ m (mod n)
(2)解密要用私钥(n,d) 我们拿到小东发来的2790以后,就用自己 的私钥(3233, 2753) 进行解密。可以证明, 下面的等式一定成立: cd ≡ m (mod n) 现在,c等于2790,私钥是(n,d)=(3233, 2753),那么,我们算出 27902753 ≡ 65 (mod 3233) 因此,我们知道了小东加密前的原文就是 65。
它等于这样两个质数的乘积:
33478071698956898786044169 84821269081770479498371376 85689124313889828837938780 02287614711652531743087737 814467999489 × 36746043666799590428244633 79962795263227915816434308 76426760322838157396665112 79233373417143396810270092 798736308917 这大概是人类已经分解的最大整数(232个十进制 位,768个二进制位)
RSA算法
• RSA公钥加密算法是1977年由罗纳德· 李维 斯特(Ron Rivest)、阿迪· 萨莫尔(Adi Shamir)和伦纳德· 阿德曼(Leonard Adleman)一起提出的。RSA就是他们三人 姓氏开头字母拼在一起组成的。 • RSA是目前最有影响力的公钥加密算法, 它能够抵抗到目前为止已知的绝大多数密 码攻击,已被ISO推荐为公钥数据加密标准。
RSA用到的数论知识
欧拉函数 任意给定正整数n,请问在小于等于n的正 整数之中,有多少个与n构成互质关系? (比如,在1到8之中,有多少个数与8构成互 质关系?) 计算这个值的方法就叫做欧拉函数,以φ(n) 表示。在1到8之中,与8形成互质关系的是1、 3、5、7,所以 φ(8) = 4。
第一种情况 如果n=1,则 φ(1) = 1 。因为1与任何数(包括自 身)都构成互质关系。 第二种情况 如果n是质数,则 φ(n)=n-1 。因为质数与小于它 的每一个数,都构成互质关系。比如5与1、2、3、 4都构成互质关系。 第三种情况 如果n是质数的某一个次方,即 n = p^k (p为质数, k为大于等于1的整数),则φ(pk)=pk-pk-1 比如 φ(8) = φ(2^3) =2^3 - 2^2 = 8 -4 = 4。 这是因为只有当一个数不包含质数p,才可能与n 互质。而包含质数p的数一共有p^(k-1)个,即 1×p、2×p、3×p、...、p^(k-1)×p,把它们去 除,剩下的就是与n互质的数。 上面的式子还可以写成下面的形式: φ(pk) = pk-pk-1 = pk(1-1/p)
第六步,将n和e封装成公钥,n和d封装成私 钥。 在例子中,n=3233,e=17,d=2753,所 以公钥就是 (3233,17),私钥就是(3步骤,一共出现六个数字: p q n φ(n) e d 这六个数字之中,公钥用到了两个(n和e),其余 四个数字都是不公开的。其中最关键的是d,因为 n和d组成了私钥,一旦d泄漏,就等于私钥泄漏。 那么,有无可能在已知n和e的情况下,推导出d? (1)ed≡1 (mod φ(n))。只有知道e和φ(n),才能 算出d。 (2)φ(n)=(p-1)(q-1)。只有知道p和q,才能算出 φ(n)。 (3)n=pq。只有将n因数分解,才能算出p和q。 结论:如果n可以被因数分解,d就可以算出,也就 意味着私钥被破解。
分成两种情况证明这个式子 mhφ(n)+1 ≡ m (mod n) (1)m与n互质。 根据欧拉定理,此时 mφ(n) ≡ 1 (mod n) 即(mφ(n))h ≡ 1 (mod n) 得到 (mφ(n))h × m ≡ m (mod n) 即mhφ(n)+1 ≡ m (mod n) 原式得到证明。 (2)m与n不是互质关系。 此时,由于n等于质数p和q的乘积,所以m必然等 于kp或kq。 以 m = kp为例,考虑到这时kp与q必然互质,则 根据欧拉定理,下面的式子成立:
第四种情况 如果n可以分解成两个互质的整数之积, n = p1 × p2 则 φ(n) = φ(p1p2) = φ(p1)φ(p2) 例φ(56)=φ(8×7)=φ(8)×φ(7)=4×6=24。
第五种情况 因为任意一个大于1的正整数,都可以写成 一系列质数的积。
根据第4条的结论,得到 再根据第3条的结论,得到 也就等于
加密解密过程 (1)加密要用公钥 (n,e) 假设小东要向我们发送加密信息m,他就要 用我们的公钥 (n,e) 对m进行加密。这里需 要注意,m必须是整数且m必须小于n。 所谓“加密”,就是算出下式的c: me ≡ c (mod n) 我们的公钥是 (3233, 17),小东的m假设是 65,那么可以算出下面的等式: 6517 ≡ 2790 (mod 3233) 于是,c等于2790,小东就把2790发给了我 们。
相关文档
最新文档