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]