RSA
文章发布时间:
最后更新时间:
文章总字数:
预计阅读时间:
最后更新时间:
文章总字数:
449
预计阅读时间:
1 分钟
RSA基本原理
接触了半年ctf 现在才开始学rsa 233 倒也不为晚 刚好重新学逆向的时候遇到了rsa的题目 那就顺便来学习一下
rsa的加密实际上就是由明文进行E次方后和N进行取模运算
1 | 密文=(明文^E)modN |
其中E和N被合称为公钥 记作 (E,N)
而解密也可以看作和加密一样 由密文进行D次方后和N进行取模运算得到
1 | 明文=密文^DmodN |
相应的 D和N合称为私钥 记作 (D,N)
密钥对则是公钥和私钥的合并 记作(E,D,N)
密钥对的生成一共要经过四个步骤 其中还需要一个中间数 这里记作L
依次是 求N 求L 求E 求D
求N N实际上是由两个质数相乘得到 可以记作 N = P*Q
求L L是q-1和p-1的最小公倍数 L=lcm(p-1,q-1)
求E E比1大比L小 E和L的最大公约数为1 gcd(E,L)=1
求D D要根据E来计算出来 E*D mod L = 1
例题
比如buu上的一题RSA 给了两个附件 一个存放密文 一个存放公钥
去这个网站把公钥分解一下
RSA公私钥分解 Exponent、Modulus,Rsa公私钥指数、系数(模数)分解–查错网 (chacuo.net)
将模数转化为十进制后 就是N 指数则为E
factordb.com这个网站可以拆解N 得到pq
1 | p= 285960468890451637935629440372639283459 |
接着进行简单的脚本运算就可以得到明文
1 | import gmpy2 |