title: RSA入门总结
date: 2017-11-13 03:14:43
tags: CRYPTO
RSA
…先简单说一下rsa相关的东西。
RSA 算法的可靠性由其极大整数因数分解的难度决定。
也就是说,极大整数做因数分解愈困难,RSA 算法愈可靠。
在还没找到一种快速因数分解的算法之前,rsa加密还是很可靠的。目前短的 RSA 秘钥可能被强力方式破解。而只要密钥长度足够长,用RSA加密的信息实际上是不能被解破的。
最近稍微看了一下相关的东西。然后整理了一下。
a^b是a的b次方…忘了应该怎么打出来了orz…
RSA算法涉及到的参数:
p : 大质数p
q : 大质数q
n : n=p*q
欧拉函数:
φ(n) = φ(p) * φ(q) = (p − 1)(q − 1) = n − (p + q − 1)
e : encryption key (public key) (又称加密指数)
d : decryption key (private key) e对于φ(n)的模反元素即e模φ(n)的逆元
m:message(m < n),明文。
c : ciphertext,c≡m^e(mod n),即密文
加密过程:
1.随机选择两个不相等的质数p和q。
2.计算p和q的乘积n。
n的长度就是密钥长度。
如n为3233写成二进制是110010100001,一共有12位,所以这个密钥就是12位。(实际应用中,RSA密钥一般是1024位,重要场合则为2048位。)
3.计算n的欧拉函数φ(n)
φ(n) = (p-1)(q-1)
4.随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质,将e作为公钥。
5.计算e关于φ(n)的模反元素d,作为私钥。
计算过程:
模反元素即模逆元(参考离散数学或者信安数学基础或者百科学习)
简单来说,就是一个整数d可以使ed乘积被φ(n)除的余数为1:
ed ≡ 1 (mod φ(n))(也就是ed%φ(n)=1)
即求解
ed+φ(n)x=1(x未知,但是求得e和φ(n)就可以通过扩展欧几里得算法得到d的值,具体可以参考最底下ctf中rsa题目解析第二个链接。)
公开e,保留d。
**公钥为(n,e),私钥为(n,d) **
针对明文M,进行加密:C=(M^e)%n,得到的C即为密文
针对密文C,进行解密,M=(C^d)%n,得到的M即为明文