Exemple #1
0
def lemma_add(p, a, b, S, m):
	lbin0 = lbin(S, a, 0, p, m)
	lbinB = lbin(S, a, b, p, m)
	return (lbin0, lbinB)
Exemple #2
0
                        metavar='m',
                        default=2**16,
                        type=int,
                        help='Table size.')
    parser.add_argument('-r',
                        metavar='r',
                        default=1024,
                        type=int,
                        help='Repeats.')
    args = vars(parser.parse_args())

    p = args['p']
    m = args['m']
    l = 4 * int(m**(float(1) / 3))
    G = choose_generator(m / l, p)
    # A = generate_multipliers(G, p)
    A = []

    print p, m, l, len(G), len(
        A)  #, len(G) ** 2 / 2 * (1 - 2 * len(G) ** 2 / p)
    S = generate_set(G, l)
    print len(S)

    sl = 0
    for i in range(args['r']):
        l = lbin(S, random.randint(1, p - 1), 0, p, m)
        sl += l
        # print l

    print float(sl) / args['r']
Exemple #3
0
def lemma_inverse(p, a, S, m):
	lbinP = lbin(S, a, 0, p, m)
	lbinM = lbin(S, p - a, 0, p, m)
	return (lbinP, lbinM)