buuoj rsa

这是第一次接触rsa,先了解一下rsa是个啥东西。

说白了,rsa是一种加密算法,他的流程是:

1.随机找两个大的素数,并且相乘;

2.计算n=p*q,phi=(p-1)*(q-1);

3.任取一个大整数e,满足gcd(e,phi)=1,即他们的最大公约数为1,(满足e的条件很简单,比如,所有大于p和q的素数都可以用);

4.确定的解密钥d,满足(d*e)mod(phi)=1,即d*e=k(phi)+1;

5.设明文为m,密文为c,且满足c=(m^e)*mod(n);

6.密文c解密为明文m,解密算法为m=(c^d)mod(n);

由上面的东西可以看出来,只根据n和e(注意:不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密。

有了对rsa基本的了解,就能做这个题了。

先把pub.key拖进IDA,发现一堆16进制的数据,直接导出来。

 

 对字符的顺序排一下,\x0A的地方要删掉并且换行。

 http://tool.chacuo.net/cryptrsakeyparse

在这个工具对公钥进行处理,得到模数n和指数e

 不过n要化成十进制

n=86934482296048119190666062003494800588905656017203025617216654058378322103517。

factordb.com

在这里获得p和q

p = 285960468890451637935629440372639283459

q = 304008741604601924494328155975272418463

写一段脚本,要用到gmpy2和rsa

flag{decrypt_256},这就出来了。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值