RSA算法原理详解(简单易懂)

本文深入浅出地介绍了RSA非对称加密算法的数学基础,包括欧拉函数、欧拉定理变型和模反元素。通过这些理论,详细阐述了RSA算法的加密和解密过程,以及公钥和私钥的生成。RSA算法的关键步骤包括选择两个质数,计算欧拉函数,选取公钥e和计算私钥d,最后用于信息的加密和解密。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要是简单高效地讲解RSA算法的基本数学原理以及加解密的步骤,算法背景以及设计到的数学证明省略。本文主要参考wikipedia和博文《非对称加密算法–RSA加密原理》
非对称公钥加密算法可以由下列几步实现:

  1. 信息接收方产生公钥 p k pk pk与私钥 s k sk sk,公钥可以给任何人,私钥自己保存;
  2. 信息发送方将要发送的信息 m m m与公钥 p k pk pk一起用特定的加密算法加密,即密文 c c c
  3. 信息接收方接收到密文 c c c,与私钥 s k sk sk一起用特定解密算法恢复明文。

可见,以上加密算法的关键角色是公钥和私钥的生成,以及加解密算法的具体操作。RSA算法就是一种实现上述公钥加密的算法。

欧拉函数

RSA算法设计到欧拉函数相关知识,下面进行一些简单定义。对于一个整数 n n n,我们用欧拉函数 φ ( n ) \varphi (n) φ(n)来表示小于 n n n并与之互质的正整数。下面给出与欧拉函数相关的2条性质(证明忽略,记住就好):

  1. 如果 n n n是质数,则 φ ( n ) = n − 1 \varphi (n)=n-1 φ(n)=n1
  2. 如果 n n n可以表示成2个互质的数的乘积,即 n = p × q n=p\times q n=p×q,那么 φ ( n ) = φ ( p ) × φ ( q ) \varphi (n)=\varphi (p)\times \varphi (q) φ(n)=φ(p)×φ(q)

欧拉定理变型

欧拉定理为:如果 m m m n n n互质,则 m φ ( n ) = k n + 1 m^{\varphi(n)}=kn+1 mφ(n)=kn+1,即模 n n n余1。
等式两边同时取整数 l l l次方,并再乘上 m m m m l φ ( n ) + 1 = m ( k n + 1 ) l = k ′ n + m m^{l\varphi(n)+1}=m(kn+1)^l=k^{'}n+m mlφ(n)+1=m(kn+1)l=kn+m。可见,如果 m < n m<n m<n,则有
m l φ ( n ) + 1   ( m o d   n ) = m . m^{l\varphi(n)+1}~(mod~n)=m. mlφ(n)+1 (mod n)=m.显然这是一个很好地恢复原数( m m m看做是传输的信息)的算法,这也为后面RSA的算法提供了思路。

模反元素

根据欧拉定理我们知道 m × m φ ( n ) − 1 = k n + 1 m\times m^{\varphi(n)-1}=kn+1 m×mφ(n)1=kn+1,即对于互质的两个数 e e e x x x,一定存在他的一个模反元素 d d d,满足 e × d   ( m o d   x ) = 1 e\times d~(mod~x)=1 e×d (mod x)=1。该等式重写为
e d = k x + 1. ed=kx+1. ed=kx+1.注意,为了书写方便,本文中不同公式出现的符号 k k k可以是任何不相等的整数。

设计一个能恢复信息 m m m的算法

前面我们通过欧拉定理变型可以恢复信息 m m m,结合模反元素的公式,我们有
m e d = m k x + 1 . m^{ed}=m^{kx+1}. med=mkx+1.假如我们令 x = φ ( n ) x=\varphi(n) x=φ(n),就有
m e d = m l φ ( n ) + 1 = k n + m . m^{ed}=m^{l\varphi(n)+1}=kn+m. med=mlφ(n)+1=kn+m.我们也可以将 e e e d d d分开,等价地写成
第 一 步 : c = m e   ( m o d   n ) 第一步:c=m^e~(mod~n) c=me (mod n)
第 二 步 : m = c d   ( m o d   n ) . 第二步:m=c^d~(mod~n). m=cd (mod n).这两步就是RSA算法的加密和解密过程( m m m是信息, e e e n n n是公钥,第一步就是加密,得到密文 c c c d d d n n n是私钥,第二步就是解密,恢复信息 m m m)。
注意,至此,我们的理论有个假设前提,那就是利用欧拉定理的时候,需要信息 m m m n n n互质,实际上 m m m n n n不互质也可以用上述公式,详细证明参考博文《RSA 算法流程及证明》。此外,还有一个限制就是 e e e φ ( n ) \varphi(n) φ(n)互质

RSA算法流程

  1. 选择两个质数 p p p q q q,算出他们的乘积 n = p × q n=p\times q n=p×q,算出对应的欧拉函数 φ ( n ) \varphi(n) φ(n)(利用性质 φ ( n ) = φ ( p ) × φ ( q ) = ( p − 1 ) ( q − 1 ) \varphi(n)=\varphi(p)\times \varphi(q)=(p-1)(q-1) φ(n)=φ(p)×φ(q)=(p1)(q1))。
  2. 选择一个 e e e,使得 e < φ ( n ) e<\varphi(n) e<φ(n)并且 e e e φ ( n ) \varphi(n) φ(n)互质。
  3. 算出 e e e的一个相对于 φ ( n ) \varphi(n) φ(n)的模反元素 d d d
  4. ( e , n ) (e,n) (e,n)为公钥, ( d , n ) (d,n) (d,n)为私钥,信息(明文) m m m长度小于 n n n
  5. 加密 c = m e   ( m o d   n ) c=m^e~(mod~n) c=me (mod n)
  6. 解密 m = c d   ( m o d   n ) m=c^d~(mod~n) m=cd (mod n)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值