非对称算法之RSA

找到一个正向容易,逆向很难的公式

$$ m^{x} \equiv y\pmod n$$

设$m$,$n$都是已知的正整数,在知道$x$的情况下计算$y$容易,而只有$y$推算$x$很难

这里得介绍一个公式
phi function 记作 φ

φ(n) $ 求 1~n 中与 n互素的数的个数

如 φ(8) 在1,2,3,4,5,6,7中,1,3,5,7与8互素,所以 φ(8)= 4

考虑 n为质数,则 φ(n) = n -1

因为
$$ \phi(A*B) = \phi(A) * \phi(B) $$

若 N = P1 * P2 (质因数分解)
所以 $$ \phi(N) = (P1-1) * (P2-1) $$

因为m与n互素, 有以下公式
$$ m^{\phi(n)} \equiv 1 \pmod n $$

结合起来可以得到

$$ m^{k*φ(n)+1} \equiv m \pmod n $$

私钥可以写成

$$ e*d = k*φ(n)+1 $$
$$ d = \frac {k*φ(n)+1} {e} $$

举例
m = 89
p1 = 53
p2 = 59
n= 53*59 = 3127
φ(n) = 52*58 = 3016
e = 3 (必须为奇数,且不与φ(n)具体公因数)
私钥
$$ d = \frac {k*\phi(n)+1} e = \frac {2*3016+1} 3 = 2011 $$

只公开n和e
n = 3127
e = 3

加密过程

m的e次方 mod n 生成密文 c
$$ c = 89^3 mod 3127 = 1394 $$

解密过程

$$ c ^d \mod n = 1394^{2011} \mod 3127 = 89 $$

破解
因为只暴露 c, n ,要得到d的话,就得解出 k*φ(n)+1,也就是φ(n),这个就回到最前面的公式,很难。

    原文作者:guange
    原文地址: https://segmentfault.com/a/1190000007908438
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞