Example #1
0
def share_generation(k, m, n, l=None, pub_inf=None):
    #k degree, m members, n identities, n >=m, modulus is 2l bits long
    if l == None:
        s = safePrime()
    else:
        s = safePrime(l)

    mod = s.get_modulus()
    A = random_polynomial(k, randint(0, mod - 1),
                          mod)  #the second parameter means secret
    #A = [985, 254, 1957, 312]
    #print "f_i" + str(A)
    P = Polynomial(A, mod, n)
    '''
    for i in range(1,n+1):
        print P.value(i)
    '''
    S = []
    if pub_inf == None:
        pub_inf = range(1, n + 1)
    inverseOfnminus1 = mod_inverse(n - 1, s.get_eular())
    for i in range(n):
        c = s.sqaure_and_multiply(P.value(pub_inf[i]), inverseOfnminus1)
        S.append(share_Polynomial(P.get_mul_value(c), mod, n, i))
    return A, S
Example #2
0
# degree of polynomial f12 is 20, and modulus is 2048 bits
f22 =  random_polynomial(20, randint(0, n2-1), n2)
P22 = Polynomial(f22, n2, n)

pub_inf = range(1,n+1)
f = open('results.txt','a')


#time for calculation of s_i(x)=f(i)^{1/(n-1)}f(x) with i = n/2, RSA modulus 1024 bits
start = timeit.default_timer()
inverseOfnminus1 = mod_inverse(n-1, phi_1)
stop = timeit.default_timer()
t_inverse_1 = stop-start
start = timeit.default_timer()
c11 = sqaure_and_multiply(n1,P11.value(pub_inf[n/2]), inverseOfnminus1)
s11_ = [(c11*i % n1)for i in f11]

stop = timeit.default_timer()
print "n=%d"%n,
print "time for calculation of s_i(x)=f(i)^{1/(n-1)}f(x) with i = n/2, RSA modulus 1024 bits degree k = 10 is "
print stop-start+t_inverse_1, " seconds"
f.write(str(stop-start+t_inverse_1))
f.write('\n')
s11=share_Polynomial(P11.get_mul_value(c11),n1,n, n/2)

#time for evaluation of s_i(x)=f(i)^{1/(n-1)}f(x) with x = n/2+1 and i = n/2
start = timeit.default_timer()
s11.value(n/2+1)
stop = timeit.default_timer()
print "n=%d"%n,