根据题目所给算法,通过递归爆破获得p,q破解密文。
题目:
1 | from Crypto.Util.number import * |
实际上reverse()的作用就是将传入参数的二进制表示倒序排列形成一个新的数,因此题目中的p和q是512位长度且01序列顺序相反的2进制数;所以我们可以通过遍历p(512位)的01序列(因为顺序相反,其实也在遍历q),并与n的二进制表示得到每一位进行比对,来获得p、q的值。
exp:
1 | from Crypto.Util.number import * |
flag{b92d9b6c-e75d-4cbb-bc39-bf39a2f57c3f}