def handle_query_0(query, path_, file_e_): in_=open(path_+file_e_, 'r') n, m =in_.readline().split() n=int(n) m=int(m)/2 buf=open(path_+"pub.txt",'rb') pub=pickle.load(buf) buf.close() # buf=open(path_+"priv.txt",'rb') # priv=pickle.load(buf) # buf.close() res=[0]*n significant_time_=[0]*n query.sort(key=lambda x: x[1]) i=0 for seq in range(n): acc_0=1 acc_1=1 t=0 old_pos=0 for (letter, pos) in query: # print letter, pos # print decrypt(priv, pub, seq[2*pos]), decrypt(priv, pub, seq[2*pos+1]) # break for j in range(old_pos, pos): in_.readline() in_.readline() old_pos=pos+1 if letter=='A': st_=time.time() acc_0=e_add(pub, acc_0, mpz(in_.readline())) acc_0=e_add(pub, acc_0, mpz(in_.readline())) significant_time_[i]+=time.time()-st_ elif letter=='C': st_=time.time() acc_0=e_add(pub, acc_0, mpz(in_.readline())) acc_1=e_add(pub, acc_1, mpz(in_.readline())) significant_time_[i]+=time.time()-st_ t+=1 elif letter=='G': st_=time.time() acc_1=e_add(pub, acc_1, mpz(in_.readline())) acc_0=e_add(pub, acc_0, mpz(in_.readline())) significant_time_[i]+=time.time()-st_ t+=1 elif letter=='T': st_=time.time() acc_1=e_add(pub, acc_1, mpz(in_.readline())) acc_1=e_add(pub, acc_1, mpz(in_.readline())) significant_time_[i]+=time.time()-st_ t+=2 st_=time.time() res[i]=e_add(pub, e_mul_const(pub, acc_0, random.randrange(pub.n)), e_mul_const(pub, e_add_const(pub, acc_1, pub.n-t), random.randrange(pub.n))) significant_time_[i]+=time.time()-st_ i+=1 for j in range(2*pos+2, 2*m): in_.readline() in_.close() print "sum significant query time = %f s" % (sum(significant_time_)) return decrypt_query_res(res, path_)
def handle_query_1(query, path_, file_e_): in_=open(path_+file_e_, 'r') n, m =in_.readline().split() n=int(n) m=int(m)/3 buf=open(path_+"pub.txt",'rb') pub=pickle.load(buf) buf.close() # buf=open(path_+"priv.txt",'rb') # priv=pickle.load(buf) # buf.close() # print query query.sort(key=lambda x: x[1]) # print query res=[0]*n #equal to the number of seq significant_time_=[0]*n # counter=0 cnst_1_= encrypt(pub, 1) with open(path_+file_pre, 'r') as pre_: cnst= mpz(pre_.readlines()[len(query)-1]) pre_.close() for i in range(n): acc=1 old_pos=0 for (letter, pos) in query: for j in range(old_pos, pos): in_.readline() in_.readline() in_.readline() # counter+=4 # print counter old_pos=pos+1 s1_=mpz(in_.readline()) s2_=mpz(in_.readline()) s3_=mpz(in_.readline()) if letter=='A': st_=time.time() acc= e_add(pub, acc, s1_) significant_time_[i]+=time.time()-st_ elif letter=='C': st_=time.time() acc= e_add(pub, acc, s2_) significant_time_[i]+=time.time()-st_ elif letter=='G': st_=time.time() acc= e_add(pub, acc, s3_) significant_time_[i]+=time.time()-st_ elif letter=='T': st_=time.time() acc= e_add(pub, acc, e_add(pub, cnst_1_, invert(e_add(pub,e_add(pub, s1_, s2_),s3_), pub.n_sq))) significant_time_[i]+=time.time()-st_ # counter+=4 # print counter for j in range(3*pos+3, 3*m): in_.readline() # counter+=1 # print counter st_=time.time() res[i]=e_mul_const(pub, e_add(pub, acc, cnst), random.randrange(pub.n)) significant_time_[i]+=time.time()-st_ #print significant_time_[i] in_.close() sg=sum(significant_time_) print "sum significant query time = %f s" % (sg) return decrypt_query_res(res, path_), sg
def handle_query_1(query, path_, file_e_): in_=open(path_+file_e_, 'r') n, m =in_.readline().split() n=int(n) m=int(m)/4 buf=open(path_+"pub.txt",'rb') pub=pickle.load(buf) buf.close() # buf=open(path_+"priv.txt",'rb') # priv=pickle.load(buf) # buf.close() # print query query.sort(key=lambda x: x[1]) # print query res=[0]*n #equal to the number of seq significant_time_=[0]*n # counter=0 for i in range(n): acc=1 old_pos=0 for (letter, pos) in query: for j in range(old_pos, pos): in_.readline() in_.readline() in_.readline() in_.readline() # counter+=4 # print counter old_pos=pos+1 if letter=='A': st_=time.time() acc= e_add(pub, acc, mpz(in_.readline())) significant_time_[i]+=time.time()-st_ in_.readline() in_.readline() in_.readline() elif letter=='C': in_.readline() st_=time.time() acc= e_add(pub, acc, mpz(in_.readline())) significant_time_[i]+=time.time()-st_ in_.readline() in_.readline() elif letter=='G': in_.readline() in_.readline() st_=time.time() acc= e_add(pub, acc, mpz(in_.readline())) significant_time_[i]+=time.time()-st_ in_.readline() elif letter=='T': in_.readline() in_.readline() in_.readline() st_=time.time() acc= e_add(pub, acc, mpz(in_.readline())) significant_time_[i]+=time.time()-st_ # counter+=4 # print counter for j in range(4*pos+4, 4*m): in_.readline() # counter+=1 # print counter st_=time.time() res[i]=e_mul_const(pub, e_add_const(pub, acc, pub.n-len(query)), random.randrange(pub.n)) significant_time_[i]+=time.time()-st_ #print significant_time_[i] in_.close() print "sum significant query time = %f s" % (sum(significant_time_)) return decrypt_query_res(res, path_)
def handle_query_0(query, path_, file_e_): in_ = open(path_ + file_e_, "r") n, m = in_.readline().split() n = int(n) m = int(m) / 2 buf = open(path_ + "pub.txt", "rb") pub = pickle.load(buf) buf.close() # buf=open(path_+"priv.txt",'rb') # priv=pickle.load(buf) # buf.close() res = [0] * n significant_time_ = [0] * n query.sort(key=lambda x: x[1]) i = 0 ltrs = map(lambda x: x[0], query) t = ltrs.count("T") * 2 + ltrs.count("C") + ltrs.count("G") with open(path_ + file_pre, "r") as pre_: cnst = mpz(pre_.readlines()[t - 1]) pre_.close() for seq in range(n): acc_0 = 1 acc_1 = 1 old_pos = 0 for (letter, pos) in query: # print letter, pos # print decrypt(priv, pub, seq[2*pos]), decrypt(priv, pub, seq[2*pos+1]) # break for j in range(old_pos, pos): in_.readline() in_.readline() old_pos = pos + 1 if letter == "A": st_ = time.time() acc_0 = e_add(pub, acc_0, mpz(in_.readline())) acc_0 = e_add(pub, acc_0, mpz(in_.readline())) significant_time_[i] += time.time() - st_ elif letter == "C": st_ = time.time() acc_0 = e_add(pub, acc_0, mpz(in_.readline())) acc_1 = e_add(pub, acc_1, mpz(in_.readline())) significant_time_[i] += time.time() - st_ elif letter == "G": st_ = time.time() acc_1 = e_add(pub, acc_1, mpz(in_.readline())) acc_0 = e_add(pub, acc_0, mpz(in_.readline())) significant_time_[i] += time.time() - st_ elif letter == "T": st_ = time.time() acc_1 = e_add(pub, acc_1, mpz(in_.readline())) acc_1 = e_add(pub, acc_1, mpz(in_.readline())) significant_time_[i] += time.time() - st_ st_ = time.time() res[i] = e_add( pub, e_mul_const(pub, acc_0, random.randrange(pub.n)), e_mul_const(pub, e_add(pub, acc_1, cnst), random.randrange(pub.n)), ) significant_time_[i] += time.time() - st_ i += 1 for j in range(2 * pos + 2, 2 * m): in_.readline() in_.close() sg = sum(significant_time_) print "sum significant query time = %f s" % (sg) return decrypt_query_res(res, path_), sg