def break_lcg(user_id): mode = "Lcg" states = [make_bet(mode, user_id, 1, 0)["realNumber"] for _ in range(3)] mod = 2**32 mul = find_mul(states, mod) inc = find_inc(states, mod, mul) lcg = LCG(states[-1], mod, mul, inc) make_bet(mode, user_id, 1, lcg.generate()) make_bet(mode, user_id, 1_000, lcg.generate()) print(make_bet(mode, user_id, 1_000_000, lcg.generate()))
""" n_bits = [40, 56, 80, 128, 168, 224, 256, 512, 1024, 2048, 4096] n_bits_len = len(n_bits) lcg = LCG(16807) # seed LCG xshif = xorshift(6504) # seed xorshift miller = MillerRabin(5) # 5 iteracoes fermat = Fermat(5) # 5 iteracoes # testanto LCG - MillerRabin print("Gerando possiveis primos LCG - MillerRabin\n") lcg_miller_start_time = time.time() for i in range(0, n_bits_len): while True: n_primo = lcg.generate(1103515245, 12345, n_bits[i]) if miller.test(n_primo): print("Possível número primo ", n_primo, " de tamanho ", n_bits[i], " bits gerado em ", (time.time() - lcg_miller_start_time), "segundos.") break lcg_miller_end_time = time.time() - lcg_miller_start_time print("--- Tempo de execucao: %s segundos. --- \n" % lcg_miller_end_time) # testando LCG - Fermat print("Gerando possiveis primos LCG - Fermat\n") lcg_fermat_start_time = time.time() for i in range(0, n_bits_len): while True:
from lcg import LCG from xorshift import Xorshift from park_miller import Park_miller if __name__ == "__main__": seed = datetime.now().microsecond rounds = 10000000 bits = [40, 56, 80, 128, 168, 224, 256, 512, 1024, 2048, 4096] if argv[1].lower() == "lcg": c = 11 a = 25214903917 for n in bits: m = 2**n start = time() result = LCG(a, c, m) result.generate(seed, rounds) end = time() print((end - start) / rounds) exit(0) if argv[1].lower() == "park_miller" or argv[1].lower() == "pm": g = 48271 for n in bits: m = 2**n - 1 start = time() result = Park_miller(g, m) result.generate(seed, rounds) end = time() print((end - start) / rounds) exit(0)