RSA从原理到ctf解题(原理篇)

简介:

RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。
对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA钥匙才可能被强力方式解破。到目前为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。

加密原理:

rsa1.png

例:

如果我们给定质数P=3,Q=11;

则N= P*Q = 33;

计算欧拉函数φ(N) = (P-1)(Q-1) = 20;

公钥E:由于E是整数且与φ(N)互质;

那么易得E{3,5,7,9,11,13,17,19};

为了方便计算我们选择E=3作为公钥;

E * D%φ(N)=1 ===> 3 * D%20 = 1;

所以私钥:D = 7;

如果我们要对明文M=3进行加密;

则:C = 3的3次方mod 33 ====> C = 27;(明文M=3被加密为密C=9)

如果我们要对密文C = 27 解密:

则: M = 27的7次方 mod 33 ===> C = 3; (9 * 9 * 9 * 9 * 9 * 9 * 9%33=3;解密成功)

小结:

上述的例子只是我们为了了解rsa加密解密原理,所以为了计算简单选择的很小的质数,而正是因为对大的质数做因数分解的困难,所以保证了rsa算法的可靠性;在应用中只要使用足够大的质数,rsa加密后的数据是不可能被解密的。

你可能感兴趣的:(RSA从原理到ctf解题(原理篇))