栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

CTF逆向RSA加解密 (SUCTF 2019 signin)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CTF逆向RSA加解密 (SUCTF 2019 signin)

最近做题遇到好几次RSA解密,最近密码学课也学到了 RSA密码算法,写一篇文章促进对RSA的理解。

一:RSA的基本原理的理解:

1.学习RSA加密得知道欧拉函数,想理解欧拉函数又得弄明白同余类与剩余系的知识,这些是基础。

2.RSA的密钥生成原理:

第一步:选择两个较大素数P,Q.

第二步:计算n=pq,z=(p-1)(q-1)。

第三步:随机选取e(其中e

第四步:选取d使得ed-1能够被z完全整除。ed mod z=1

第五部:公钥是(n,e) 私钥是(n,d)

 

二 下面以SUCTF 2019 signin记录一下RSA的应用与解密方法

 这里函数分析得到 

N=103461035900816914121390101299049044413950405173712170434161686539878160984549

c = 0xad939ff59f6e70bcbfad406f2494993757eee98b91bc244184a377520d06fc35

e = 65537

第一步我们要求取的是pq两个素数的值 从其他大佬那里偷来神器RSAyafu 他可以讲给定的数分成两个相乘的素数

 

 直呼nb

p = 366669102002966856876605669837014229419

q = 282164587459512124844245113950593348271

下面就是使用python解密了

(先得安装gmpy2库)

学习一下gmpy2库的使用

gmpy2.invert(a,c) 对a,求b,使得a*b=1(mod c)

gmpy2.powmod(a,n,p)  对于给定的整数p,n,a,计算aⁿ mod p

补充一下binascii.unhexlify函数

unhexlify(hexstr)将十六进制转换为二进制形式。

hex()函数记得加[2:]去掉开头的0x。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/302304.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号