RSA
RSA是一种非对称加密体制,由公钥和私钥组成,数学原理是实数域的模余法。在使用私钥对数据进行加密后,可用公钥对数据进行解密。
在RSA算法中,设公钥为(D, N),私钥为(E, N),加密过程可以表示为 明 文 E m o d N = 密 文 明文^{E} \ mod\ N=密文 明文E mod N=密文
解密算法一致,把E换成D, 密 文 D m o d N = 明 文 密文^{D} \ mod\ N=明文 密文D mod N=明文
当然,能这样计算对N、E、D是有要求的。
RSA是目前公认的安全算法,对它进行破解需要进行大数的质数分解,目前除了穷举法没有发现其他方法能计算,而穷举法在足够大的大数面前计算是需要非常漫长的时间的,因此当RSA算法采用的N、E、D足够大时,就认为是安全的。目前来说需要N达到1024bits。
一、数学原理
-
欧拉函数的性质:
若 n = q p , p 和 q 是 两 个 质 数 , 则 φ ( n ) = ( q − 1 ) ( p − 1 ) n = qp,p和q是两个质数,\ 则{\varphi}(n) = (q-1)(p-1) n=qp,p和q是两个质数, 则φ(n)=(q−1)(p−1) -
欧拉定理:若a与n互质,即 g c d ( a , n ) = 1 , 则 a φ ( n ) ≡ 1 m o d n gcd(a,n)=1, 则a^{\varphi(n)}\ {\equiv}\ 1\mod\ n gcd(a,n)=1,则aφ(n) ≡ 1mod n
进一步,若n是质数, a n − 1 ≡ 1 m o d n a^{n-1}\ {\equiv}\ 1\mod n an−1 ≡ 1modn, a n ≡ a m o d n a^{n}\ {\equiv}\ a\mod n an ≡ amodn -
费马小定理:若n是质数,a与n互质,,则 a n − 1 ≡ 1 m o d n a^{n-1}\ {\equiv}\ 1 \mod \ n an−1 ≡ 1mod n,
-
逆元:如果 a b ≡ 1 m o d n , 则 a 和 b 互 为 逆 元 ab\ {\equiv}\ 1\mod\ n, 则a和b互为逆元 ab ≡ 1mod n,则a和b互为逆元
-
RSA加密的条件:
· n = p × q n = p{\times}q n=p×q
· L = φ ( n ) = ( p − 1 ) ( q − 1 ) L = {\varphi}(n) = (p-1)(q-1) L=φ(n)=(p−1)(q−1)
· 随机选取 1 < e < L , 使 得 g c d ( e , L ) = 1 1<e<L,使得gcd(e,L)=1 1<e<L,使得gcd(e,L)=1
·计算 e d ≡ 1 m o d L ed\ {\equiv}\ 1\mod\ L ed ≡ 1mod L
·公钥对 =(n, d),私钥对 =(n, e)继续设明文 = M,密文 = C,现在来证明可以用上述方法加解密的条件。
M E m o d N = C , C D m o d N = M M^{E}\ mod\ N = C,\ C^{D}\mod\ N = M ME mod N=