首页 > TAG信息列表 > BabyRSA
babyRSA GWCTF 2019
Involved Knowledge RSA Adjacent Element Description encrypt.py import hashlib import sympy from Crypto.Util.number import * flag = 'GWHT{******}' secret = '******' assert(len(flag) == 38) half = len(flag) / 2 flag1 = flag[:half]CTF-RSA 数论解题记一:2019-AceBear-babyRSA
前言 最近一直跟着师傅们打比赛,学到了不少东西。看了看近期的几场比赛,虽然RSA的题越来越少了,但每场比赛都有,正好最近老遇见考LaXeT公式的题目,感觉公式写出来还挺好看,所以想试着利用LaXeT公式来写一下RSA类题目的推导过程,一方面提高下自己的基础数论水平,另外也磨练一下编写LaXeT[MRCTF2020]babyRSA
[MRCTF2020]babyRSA 附件下载: 给了个baby_RSA.py文件 import sympy import random from gmpy2 import gcd, invert from Crypto.Util.number import getPrime, isPrime, getRandomNBitInteger, bytes_to_long, long_to_bytes from z3 import * flag = b"MRCTF{xxxx}" base[NCTF2019]babyRSA
encode from Crypto.Util.number import * from flag import flag def nextPrime(n): n += 2 if n & 1 else 1 while not isPrime(n): n += 2 return n p = getPrime(1024) q = nextPrime(p) n = p * q e = 0x10001 d = inverse(e, (p-1) * (q-1))buu [GUET-CTF2019]BabyRSA
查看题目 观察题目给的条件,给了p+q,(p+1)(q+1),e,d,以及密文C. RSA的解密公式:M=C^d mod n 所以我们只要求出n即可。(n = pq) n = (p+1)(q+1) - (p+q) - 1 求M的值,已知C,d,n后 用函数pow(),即可求出 import libnum a = 0x1232fecb92adead91613e7d9ae5e36fe6bb765317d6ed38ad890b407