丢失的MD5
打开就是一段代码,应该用python2是可以直接运行的,因为它最后是print des嘛,python3都是要print (des)的嘛,直接运行之后给的提示是“Unicode-objects must be encoded before hashing”要求修改m.update(‘TASC’+chr(i)+‘O3RJMV’+chr(j)+‘WDJKX’+chr(k)+‘ZM’),所以进行修改,改为“m.update(‘TASC’.encode(‘utf-8’)+chr(i).encode(‘utf-8’)+‘O3RJMV’.encode(‘utf-8’)+chr(j).encode(‘utf-8’)+‘WDJKX’.encode(‘utf-8’)+chr(k).encode(‘utf-8’)+‘ZM’.encode(‘utf-8’))”,然后可以直接运行得结果。
[BJDCTF 2nd]rsa1
这道题呢其实也可以算做没写出来,编辑代码呢倒是编辑出来了,
但是答案一直解决不了,一直出现下图情况,解决了很久一直没有变化。
[HDCTF2019]basic rsa
题目如下:
大概只要加一个d然后pow出flag就好
得出flag{B4by_Rs4}
rsa2
拿到题目,发现e很大,应该是维纳攻击
然后用代码解出了d
d=8920758995414587152829426558580025657357328745839747693739591820283538307445
然后放到题目给出的代码里面,提示报错
“TypeError: Unicode-objects must be encoded before hashing”
经过修改得到下面的代码:
并得到flag,但是得到的好像并不是正确答案,不知道为什么好像只能用python2才行,我还对比了d是没有错的,就只能是最后的函数还是不太行了,也不太明白为什么不行。
RSA2
题目给出了e,n和dp
这里的n无法直接分解需要借助dp来求解素数p,然后求得素数q,设计一个循环去把p算出来
for i in range(1,e) : if (temp-1)%i==0: x=(temp-1)//i+1 y=n%x if y==0: p=x
然后再按照正常流程把d算出来然后pow(c,d,n)得出flag。