rsa

写题目之前先了解下rsa算法

rsa

RSA加密是对明文的E次方后除以N后求余数的过程

公钥n = p * q,其中p和q是两个大素数

e是随机选择的数,作为公钥

大佬的小节 rsa详解
在这里插入图片描述
在这里插入图片描述

上面的都不用管,随便看一看就好了,我们要做的就是解密,上面当成公式用.

也就是 密文的D次方取余N

把上面的未知数都求出来

拿到的一个文件是公钥,放进去

求E,N网址
E:65537
N:8693448229604811919066606200349480058890565601720302561721665405
8378322103517

p,q是N的最素数
求p,q
p:285960468890451637935629440372639283459
q: 304008741604601924494328155975272418463

根据上面的公式
L = lcm(p-1,q-1)
E * D mod L = 1
解密:
在这里插入图片描述

就可以写脚本了

脚本

没写出来,贴上别人的

import gmpy2
import rsa

e = 65537
n = 86934482296048119190666062003494800588905656017203025617216654058378322103517
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463

phin = (q-1)*(p-1)

d = gmpy2.invert(e, phin)

key = rsa.PrivateKey(n, e, int(d), p, q)

with open(“G:\output\flag.txt”, “rb+”) as f:
f = f.read()
print(rsa.decrypt(f, key))

flag{decrypt_256}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值