Beispiel #1
0
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()))
Beispiel #2
0
    """
    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:
Beispiel #3
0
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)