第二篇CTF密码笔记,拖了好久QAQ~
题目来源:2020年网鼎杯青龙组crypto 1
Quick Start
题目如下:
1 | #!/usr/bin/env python |
题目已知n,m,c,求flag。
关键代码c = pow(m, bytes_to_long(flag), n),指m^flag ≡ c (mod n)
一开始以为是RSA加密,后来看到dalao的wp才知道这个用的是离散对数,即求:
对 a^x ≡ b(mod m) 求解 x
在python中的sympy库,有函数discrete_log(),可以快速求解离散对数,如:
其中,discrete_log(n,c,m),函数内依次为模值,余数,底数。对于本题:
1 | from sympy.ntheory import discrete_log |
得到十六进制的结果为
0x666c61677b35663935636139332d313539342d373632642d656430622d6139313339363932
636234617d
然后十六进制字符转换,得到flag:flag{5f95ca93-1594-762d-ed0b-a9139692cb4a}