2024 赣育杯 CTF --- Crypto random_dlp wp

文章目录

      • 题目
      • 分析过程
      • 解题代码

题目

from random import *
from Crypto.Util.number import *
from gmpy2 import *

m = getrandbits(128)
flag = b'Sangfor{'+str(m).encode()+b'}'
big_bits = 992

x = getrandbits(32)
g = getrandbits(128)


def prime_number(big_bits):
    number = getrandbits(big_bits)
    number = number << 32
    return next_prime(number)


def encrypt(g, x, p):
    c = pow(g, x, p)
    return c


p = getPrime(1024)
c = encrypt(g, x, p)
random_list1 = []

for i in range(10):
    random_num1 = prime_number(big_bits)
    random_num2 = prime_number(big_bits)
    if i == 0:
        Composite_number = random_num1 * random_num2
        xor_prime = random_num1 ^ random_num2
        random_list1.append(int(Composite_number))
        random_list1.append(int(xor_prime))
    else:
        random_list1.append(int(random_num1))
        random_list1.append(int(random_num2))


with open("output.txt", "w") as file:
    file.write(str(p)+'\n')
    file.write(str(g)+'\n')
    file.write(str(c)+'\n')
    file.write(str(random_list1)

你可能感兴趣的:(CTF,python,开发语言)