RSA算法深入剖析

Posted Nullan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RSA算法深入剖析相关的知识,希望对你有一定的参考价值。

数论基础

欧拉函数

小于n的正整数中与n互质的数的数目

若 n = pq ,p和q是质数,则 φ ( n ) = φ ( q ) ∗ φ ( p ) = ( q − 1 ) ∗ ( p − 1 ) \\varphi(n) = \\varphi(q)*\\varphi(p) = (q-1)*(p-1) φ(n)=φ(q)φ(p)=(q1)(p1)

同余

同余:如果两个整数除以同一个整数m的余数相同,则二者关于m同余
a ÷ m … … n a\\div m……n a÷mn b ÷ m … … n b\\div m……n b÷mn
同理,若整数a和b满足a-b能被整数m整除,则两者关于m同余
a ≡ b    (    m o d   m ) a\\equiv b\\;(\\;mod\\ m) ab(mod m)

欧拉定理

欧拉定理:对于两个互质的正整数a和b,有 a φ ( n ) ≡ 1 ( m o d    b ) a^ {\\varphi(n)}\\equiv 1(mod\\;b) aφ(n)1(modb)
( a φ ( n ) − 1 ) ÷ b … … 0 (a^ {\\varphi(n)}- 1)\\div b ……0 (aφ(n)1)÷b0

证明

看解密公式 c d ÷ n … … m c^d\\div n……m cd÷nm
∵ m < n \\because m<n m<n
∴ m ÷ n … … m \\therefore m\\div n……m m÷nm
∴ c d ≡ m    ( m o d    n ) \\therefore c^d\\equiv m\\;(mod\\;n) cdm(modn)
看加密公式
∵ m e ÷ n = j … … c \\because m^e\\div n=j……c me÷n=jc
∴ c = m e − j ∗ n \\therefore c= m^e -j*n c=mejn
得到 c c c的一个代数式,将 c c c代入上面的同余式
( m e − j ∗ n ) d ≡ m    ( m o d    n ) (m^e -j*n)^d\\equiv m\\;(mod\\;n) (mejn)dm(modn)
二项式定理展开得
m e d + m e ( d − 1 ) ∗ ( − j n ) + m e ( d − 2 ) ∗ ( − j n ) 2 + … … + m 2 e ∗ ( − j n ) d − 2 + m e ∗ ( − j n ) d − 1 + ( − j n ) d ≡ m    ( m o d    n ) m^{ed}+m^{e{(d-1)}}*(-jn)+m^{e{(d-2)}}*(-jn)^2+……+m^{2e}*(-jn)^{d-2}+m^e*(-jn)^{d-1}+(-jn)^d \\equiv m\\;(mod\\;n) med+me(d1)(jn)+me(d2)(jn)2++m2e(jn)d2+me(jn)d1+(jn)dm(modn)
除了第一项每一项都包含因数n,而n的倍数除以n的余数为0,所以上面的式子可以简化为
m e d ≡ m    ( m o d    n ) m^{ed} \\equiv m\\;(mod\\;n) medm(modn)
∵ e ∗ d ÷ φ ( n ) = k … … 1 \\because e*d\\div\\varphi(n)=k……1 ed÷φ(n)=k1
∴ e ∗ d = k ∗ φ ( n ) + 1 \\therefore e*d = k*\\varphi(n)+1 ed=kφ(n)+1
代入同余式
m k ∗ φ ( n ) + 1 ≡ m    ( m o d    n ) m^{k*\\varphi(n)+1} \\equiv m\\;(mod\\;n) mkφ(n)+1m(modn)
此时,只要证明这个同余式成立就能证明通过解密能求出原文
分类讨论 m m m n n n互质和 m m m n n n不互质的情况讨论

情况1: m m m n n n互质,由欧拉定理得
m φ ( n ) ≡ 1 ( m o d    n ) m^ {\\varphi(n)}\\equiv 1(mod\\;n) mφ(n)1(modn)
m φ ( n )    m o d   n = 1    m o d    n m^ {\\varphi(n)}\\;mod\\ n = 1\\;mod\\;n mφ(n)mod n=1modn
k个式子相乘
m k φ ( n )    m o d   n = 1    m o d    n m^ {k\\varphi(n)}\\;mod\\ n = 1\\;mod\\;n mkφ(n)mod n=1modn
将m个同余式相加
m k φ ( n ) + 1    m o d   n = m    m o d    n m^ {k\\varphi(n)+1}\\;mod\\ n = m\\;mod\\;n mkφ(n)+1mod n=mmodn
m k φ ( p ) φ ( q ) ≡ 1 ( m o d    n ) m^ {k\\varphi(p)\\varphi(q)}\\equiv 1(mod\\;n) mkφ(p)φ(q)1(modn)
情况1证毕

情况2: m m m n n n不互质
∵ n = p ∗ q , m < n , p q 互 质 \\because n = p*q,m<n,pq互质 n=pq,m<n,pq
∴ m 必 定 是 , 且 仅 是 p 或 q 中 某 一 个 的 倍 数 \\therefore m必定是,且仅是p或q中某一个的倍数 mpq
设 m 是 p 的 倍 数 , 记 m = h ∗ p 设m是p的倍数,记m = h*p mp以上是关于RSA算法深入剖析的主要内容,如果未能解决你的问题,请参考以下文章

非对称加密算法-RSA算法

RSA算法详解

RSA  加密算法(原理篇)

数据结构与算法之深入解析RSA加密算法的实现原理

RSA加密算法简单分析

RSA 加密及php实现