baby magic random
random data is hard to find, so sometimes people generate random data from random data!
Challenge script:
import random
def lcg(state, multiplier, increment, modulus):
return (multiplier * state + increment) % modulus
def to_bytes(x): # converts number to 4 bytes (base 10 -> base256)
return x.to_bytes(4, "big")
def from_bytes(x): # converts 4 bytes to number (base256 -> base 10)
return int.from_bytes(x, "big")
SECRET_MESSAGE = "ThisFakeAnsw"
modulus = 0xfffffffb
multiplier = from_bytes(SECRET_MESSAGE.encode()[:4]) # generates multiplier, increment, state using the secret_message
increment = from_bytes(SECRET_MESSAGE.encode()[4:8])
state = from_bytes(SECRET_MESSAGE.encode()[8:])
output = []
for i in range(4):
state = lcg(state, multiplier, increment, modulus)
output.append(state)
print(output)
Output:
[3269947243, 1586749721, 3144236226, 1915197705]