m0re

放在最前面

大师傅博客
从数盲到口算 ——带你玩转RSA加密算法(一)
你想要的RSA解题技巧(二)
前言:gmpy2库终于安装好了,那就能开心的玩耍了。
一个平台一个平台的“扫荡”
RSA这类题真是每次看见都着急,学脚本吧?但是又没有gmpy2。无奈,现在终于有了,我要把之前每写出来的题扫一遍。
关于RSA的这个密码。数学逻辑比较……那啥一点,跟着B站上的一个up主学的,讲的挺好,听着听着睡着了。让我找到了高中的感觉。跑题了,,咳咳。当然还有师傅们的博客提供学习帮助。

RSA密码原理

来自漏斗社区
数学知识:
首先:取模运算知识,就是取余数。可以使用python的pow函数来解
pow的解法如下:

Augenstern
其次:同余运算。两个整数a,b,它们除以整数M所得的余数相等:a ≡ b(mod m),比如说5除3余数为2,11除3余数也为2,于是可写成11 ≡ 5(mod 3)。
RSA加密算法:
一个原理图,从漏斗社区借鉴的
来自漏斗社区
来自漏斗社区
这两张图对于理解rsa加密很有帮助,我从这两张图中理解后思路变的更清晰了。
还有一张解析CTF中的rsa基础题型的图。声明:是漏斗社区的师傅写的,我只是搬过来做个笔记,方便以后查询使用。
来自漏斗社区
做几个类型的题目记录一下,防止以后忘记方便复习。

BUUCTF

RSA

Augenstern
这道题是一种类型,已知p,q,e,求d
可以用求d的脚本直接解出,运行脚本需要用到gmpy2第三方库。
直接上脚本

#!------Augenstern------!
#!lalalalalala------lalalalalalalalala!
#!***********lxj python***********!
import gmpy2
from Crypto.Util import number
p = 473398607161
q = 4511491
e = 17
d = gmpy2.invert(e,(p-1)*(q-1))
print (d)

flag{125631357777427553}

rsarsa

Augenstern
脚本关。

import gmpy2
def Decrypt(c,e,p,q):
	L=(p-1)*(q-1)
	d=gmpy2.invert(e,L)
	n=p*q
	m=gmpy2.powmod(c,d,n)
	flag=str(m)
	print("flag{"+flag+"}")
if __name__ == \'__main__\':
	p =  9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
	q =  11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
	e =  65537
	c =  83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034
	Decrypt(c,e,p,q)

注释:
__name__==\'__main__\'一个python文件通常有两种使用方法,
第一是作为脚本直接执行,
第二是 import 到其他的 python 脚本中被调用(模块重用)执行。因此 if __name__ == \'main\': 的作用就是控制这两种情况执行代码的过程,在 if __name__ == \'main\': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而 import 到其他脚本中是不会被执行的,忘了就再看看大佬的博客大佬博客
flag其他没什么了。flag直接得到。

RSA1

Augenstern
其实通过这道题我学到很多,一点一点看

dp=d%(p-1)
dq=d%(q-1)

这个脚本不会写,我只会写那种异常的简单的小脚本,这种不会写。本人脸皮厚当个script boy。

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-04-23
  • 2022-12-23
  • 2022-03-05
  • 2022-12-23
  • 2021-12-04
  • 2022-12-23
  • 2021-07-14
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-12
  • 2022-12-23
  • 2021-09-16
  • 2022-12-23
相关资源
相似解决方案