RSA算法

基础知识

  • 互质关系
    如果两个正整数,除了1以外,没有其他公因子,我们就称这两个数是互质关系。比如,15和32没有公因子,所以它们是互质关系。这说明,不是质数也可以构成互质关系。
    关于互质关系的结论:
      1. 任意两个质数构成互质关系,比如13和61。
      2. 一个数是质数,另一个数只要不是前者的倍数,两者就构成互质关系,比如3和10。
      3. 如果两个数之中,较大的那个数是质数,则两者构成互质关系,比如97和57。
      4. 1和任意一个自然数是都是互质关系,比如1和99。
      5. p p p是大于1的整数,则 p p p p − 1 p-1 p1构成互质关系,比如57和56。
      6. p p p是大于1的奇数,则 p p p p − 2 p-2 p2构成互质关系,比如17和15。

  • 费马小定理
    定义: a a a是整数, p p p是质数,则 a p − a \large{a^p-a} apa p p p的倍数

    => a p − a \large{a^p-a} apa p p p 取余数为0
    => a p k 1 p \Large{a^p}\over {k_1 p} k1pap − \Large- a k 2 p \Large{a\over k_2p} k2pa 余数相减为0
    => a p \large{a^p} ap a \large{a} a p p p 取模相等
    => a p \large{a^p} ap a \large{a} a同余即 a p ≡ a ( m o d   p ) \large{{a^p}\equiv{a}\small(mod \ p)} apamod p

    变形 :
    ∵ a ( a p − 1 − 1 ) \because \large{a(a^{p-1}-1)} a(ap11) p p p 的倍数
    a a a 不是 p p p 的倍数
    => a p − 1 − 1 \large{a^{p-1}-1} ap11 p p p 的倍数
    => a p − 1 ≡ 1 ( m o d   p ) \large{{a^{p-1}}\equiv{1}(\small mod \ p)} ap11mod p

  • 欧拉函数
    ϕ ( n ) \phi(n) ϕ(n),欧拉函数,该函数求的是任意给定正整数 n n n,请问在小于等于n的正整数之中,有多少个与 n n n 构成互质关系
    欧拉函数是积性函数即 ϕ ( a ) = ϕ ( b ) ϕ ( c ) \phi(a)=\phi(b)\phi(c) ϕ(a)=ϕ(b)ϕ(c) 其中 a = b ∗ c a=b*c a=bc
    eg: ϕ ( 15 ) = ϕ ( 3 ) ϕ ( 5 ) = ( 3 − 1 ) ∗ ( 5 − 1 ) = 8 \phi(15)=\phi(3)\phi(5)=(3-1)*(5-1)=8 ϕ(15)=ϕ(3)ϕ(5)=(31)(51)=8

  • 费马-欧拉定理
    定义:若 a a a 是整数, n n n 是整数, a a a n n n 互质,记作 a ⊥ n a\bot n an
    a ϕ ( n ) − 1 \large{a^{\phi(n)}-1} aϕ(n)1 n n n的倍数 即 a ϕ ( n ) ≡ 1 ( m o d   n ) \large{{a^{\phi(n)}}\equiv{1}(\small mod \ n)} aϕ(n)1mod n
    证明:若 n n n是质数时候, a ϕ ( n ) − 1 \large{a^{\phi(n)}-1} aϕ(n)1 n n n的倍数
    => a n − 1 − 1 \large{a^{n-1}-1} an11 n n n的倍数
    => a n − 1 ≡ 1 ( m o d   n ) \large{{a^{n-1}}\equiv{1}(\small mod \ n)} an11mod n
    =>得证费马小定理是欧拉-费马定理的限定情况,后者更加一般化

RSA算法

步骤:
1.取大质数 p , q p,q p,q

2. N = p ∗ q N=p*q N=pq
ps:N的长度就是密钥长度,一般至少取1024位

3.设 r = ϕ ( N ) = ϕ ( p ) ϕ ( q ) = ( p − 1 ) ∗ ( q − 1 ) {r=\phi(N)=\phi(p)\phi(q)=(p-1)*(q-1)} r=ϕ(N)=ϕ(p)ϕ(q)=(p1)(q1)

4.选取 e < r e<r e<r e ⊥ r e\bot r er
=>获得公钥( e , N e,N e,N
ps:应用中e一般取65537

5.求一个 d d d值,满足 e e e关于r的模逆元即 e d − 1 ed-1 ed1 r r r的倍数
e d ≡ 1 ( m o d   r ) {{ed}\equiv{1}(\small mod \ r)} ed1mod r
=>获得私钥( d , N d,N d,N

6.加密过程
B o b   m → A l i c e Bob \ \underrightarrow{m} Alice Bob  mAlice
Bob向Alice发送明文 m , m < N m,m<N m,m<N(如果太长分段发送)
m e − c m^e-c mec N N N的倍数
c ≡ m e ( m o d   N ) {{c}\equiv{m^e}(\small mod \ N)} cmemod N
=> c c c是加密后的密文

7.解密过程
c d − ? c^d-? cd? N N N的倍数,? 即使所求明文 m m m
c d ≡ ? ( m o d   N ) \large{{c^d}\equiv{?}(mod \ N)} cdmod N

证明:由加密推解密,已知加密的公式
∵ m e − c \because m^e-c mec 是N的倍数
=> c = m e + N c=m^e+N c=me+N的倍数
∴ c d = m e d + N \therefore c^d=m^{ed}+N cd=med+N的倍数
          = m 1 + r 的 倍 数 + N =m^{1+r的倍数}+N =m1+r+N的倍数p;    模 逆 元 公 式 : e d − 1 是 r 的 倍 数 ← \underleftarrow{\small 模逆元公式: ed-1是r的倍数} :ed1r
          = m ∗ m r 的 倍 数 + N =m*m^{r的倍数}+N =mmr+N的倍数
          = m ∗ m ϕ ( N ) 倍 数 + N =m*m^{\phi(N)倍数}+N =mmϕ(N)+N的倍数
          = m ∗ ( 1 + N 的 倍 数 ) + N =m*\small{(1+N的倍数)}+N =m(1+N)+N的倍数 费 马 欧 拉 定 理 : a ϕ ( N ) − 1 是 N 的 倍 数 ← \underleftarrow{\small 费马欧拉定理: {a^{\phi(N)}-1} 是 N的倍数} :aϕ(N)1N
          = m + N =m+N =m+N的倍数
∴ c d − m = N \therefore c^d-m=N cdm=N的倍数
得证

拓展:
RSA算法原理1
RSA密钥长度、明文长度和密文长度
b站视频讲解
RSA算法原理2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值