コード例 #1
0
            p1 = calc_p(d1, m, init, end)
            p2 = calc_p(d2, m, init, end)
            if (p2 > p1):
                reptbl = newrep
                rearrtbl = newrearr
            else:
                r = random.random()
                if (r < math.exp(p2 - p1)):
                    reptbl = newrep
                    rearrtbl = newrearr
            if (p2 > cur_max):
                cur_max = p2
                cur_best = d2
            elapsed = time.time() - start
        print(
            "Attempt {num}:\n Current best guess: {cur_best}, logP={cur_max}..."
            .format(num=counter, cur_best=cur_best, cur_max=cur_max))
    return cur_best


if __name__ == "__main__":
    if (len(sys.argv) != 4):
        raise Exception("usage: ./break_code.py coded-file corpus output-file")
    random.seed()
    encoded = encode.read_clean_file(sys.argv[1])
    corpus = encode.read_clean_file(sys.argv[2])
    decoded = break_code(encoded, corpus)

    with open(sys.argv[3], "w") as file:
        print(decoded, file=file)
コード例 #2
0

def get_initial_encryption_tables():
    letters = list(range(ord("a"), ord("z") + 1))
    random.shuffle(letters)
    replace_table = dict(
        zip(map(chr, range(ord("a"),
                           ord("z") + 1)), map(chr, letters)))
    rearrange_table = list(range(0, 4))
    random.shuffle(rearrange_table)

    return replace_table, rearrange_table


if __name__ == "__main__":
    if len(sys.argv) != 3:
        raise Exception("usage: break_code.py input-file output-file")

    input = encode.read_clean_file(sys.argv[1])

    letters = list(range(ord("a"), ord("z") + 1))
    random.shuffle(letters)
    replace_table = dict(
        zip(map(chr, range(ord("a"),
                           ord("z") + 1)), map(chr, letters)))
    rearrange_table = list(range(0, 4))
    random.shuffle(rearrange_table)

    with open(sys.argv[2], "w") as file:
        print(encode.encode(input, replace_table, rearrange_table), file=file)