一段代码的改错历程
为解一道rsa的题,自己写了段代码,然后错误百出啊????♀️源代码:c = 100000111101010010110010100101001011110001000001101101101111000111001010011111101111001010110110001001111010101000111000011111111101101001111111100001110011010e
·
为解一道rsa的题,自己写了段代码,
然后错误百出啊🤦♀️
源代码:
c = 100000111101010010110010100101001011110001000001101101101111000111001010011111101111001010110110001001111010101000111000011111111101101001111111100001110011010
e = 65537
n = 86934482296048119190666062003494800588905656017203025617216654058378322103517
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463
import rsa
import gmpy2
phi = (q-1) * (p-1)
d = gmpy2.invert(e,phi)
key = rsa.PrivateKey(n,e,d,q,p)
print(rsa.decrypt(c,key))
运行一下
AttributeError: module ‘rsa’ has no attribute ‘PrivateKey’
说我rsa里没有PrivateKey属性,
检查一下:
我确定它有啊
而且我的文件名也没有用到rsa等关键字啊
没办法,放交互模式里试试
好,没有出错,那就在交互模式下吧,
又错!
TypeError: cannot convert ‘int’ object to bytes
无法将"int"对象转换为字节,what?
那就是我c转的不对了?
那就直接开文件,把最后一行改成
with open("D:\\新建文件夹\\平时\\flag.enc","rb") as f:
print (rsa.decrypt(f.read(),key).decode())
注意,这里改成自己文件路径,而且,应该是两个\,不是一个!别问我咋知道的,问就是实践出真知
然后你以为他就对了吗,不,它又错了
TypeError: dkey should be an integer, not <class ‘mpz’>
dkey应该是整数,而不是<class’mpz’>,,,,,,
啊?那把key输出看看
不对,看错了,是dkey
但是,小白不懂那来的dkey,也不懂它咋就不是int型了😢
终于在我的不懈努力下找到了解决办法:
将
key = rsa.PrivateKey(n,e,d,q,p)
改为
key = rsa.PrivateKey(n,e,int(d),q,p)
也就是说,需要该成int型的是d
然后终于正确运行了:
啦啦啦
完成!
flag{decrypt_256}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献2条内容
所有评论(0)