rsa算法及举例

rsa算法简介

https://www.cnblogs.com/jiftle/p/7903762.html

某ctf-crypto题目-rsa

已知n,e,enc

N : 460657813884289609896372056585544172485318117026246263899744329237492701820627219556007788200590119136173895989001382151536006853823326382892363143604314518686388786002989248800814861248595075326277099645338694977097459168530898776007293695728101976069423971696524237755227187061418202849911479124793990722597
e : 354611102441307572056572181827925899198345350228753730931089393275463916544456626894245415096107834465778409532373187125318554614722599301791528916212839368121066035541008808261534500586023652767712271625785204280964688004680328300124849680477105302519377370092578107827116821391826210972320377614967547827619

enc : 38230991316229399651823567590692301060044620412191737764632384680546256228451518238842965221394711848337832459443844446889468362154188214840736744657885858943810177675871991111466653158257191139605699916347308294995664530280816850482740530602254559123759121106338359220242637775919026933563326069449424391192

在e特别大的情况下,可以使用wiener attack的进行破解,RsaCtfTool集成了wiener attack的方法,接下来用RsaCtfTool解密。

注:解密之前先说一下RsaCtfTool的安装以及使用:
安装:
https://www.cnblogs.com/jiugao/p/11528771.html
https://blog.csdn.net/qq_40657585/article/details/84865285
使用:
https://www.freebuf.com/sectool/185468.html
安装成功是这个样子:
在这里插入图片描述
该题用到的的使用命令:
把n,e转换为PEM格式:

python RsaCtfTool.py --createpub -n 782837482376192871287312987398172312837182 -e 65537

由公钥文件(pem格式)和密文文件解出明文:

python RsaCtfTool.py --publickey 公钥文件 --uncipherfile 加密的文件

已知公钥(pem)求私钥(pem):

RsaCtfTool.py --publickey 公钥文件 --private

把私钥(pem)文件转化为n、e

python RsaCtfTool.py --dumpkey --key 公钥文件

解题过程:
1.把n,e转换为PEM格式
在这里插入图片描述
2.由公钥文件(pem格式)和密文文件解出明文:
在这里插入图片描述
可以看到ValueError提示message too large

换个思路
3.已知公钥(pem)求私钥(pem):
在这里插入图片描述
4.把私钥(pem)文件转化为n、e、p、q、d:
在这里插入图片描述
5.python解密
所有参数都知道了,直接带入rsa的解密公式就ok

# coding:utf-8
from libnum import n2s, s2n
# 先用工具爆破,已知公钥和密文,工具得到私钥,解密
# 另一个有除法的python,int转float值太大
if __name__ == "__main__":
    p = 15991846970993213322072626901560749932686325766403404864023341810735319249066370916090640926219079368845510444031400322229147771682961132420481897362843199
q = 28805791771260259486856902729020438686670354441296247148207862836064657849735343618207098163901787287368569768472521344635567334299356760080507454640207003
e = 354611102441307572056572181827925899198345350228753730931089393275463916544456626894245415096107834465778409532373187125318554614722599301791528916212839368121066035541008808261534500586023652767712271625785204280964688004680328300124849680477105302519377370092578107827116821391826210972320377614967547827619
d = 8264667972294275017293339772371783322168822149471976834221082393409363691895
c = 38230991316229399651823567590692301060044620412191737764632384680546256228451518238842965221394711848337832459443844446889468362154188214840736744657885858943810177675871991111466653158257191139605699916347308294995664530280816850482740530602254559123759121106338359220242637775919026933563326069449424391192

n = p * q
m = pow(c, d, n)
print(n2s(m))
#flag{Wien3r_4tt@ck_1s_3AsY}
发布了27 篇原创文章 · 获赞 8 · 访问量 8250

猜你喜欢

转载自blog.csdn.net/weixin_41652128/article/details/102516075
今日推荐