while True: conn, addr = serv.accept() data = str(conn.recv(4096).decode()) if data.split(':')[0] == 'x_prime': alice_conn = conn x_prime = int(data.split(':')[1]) print(x_prime) if data.split(':')[0] == 'y_prime': bob_conn = conn y_prime = int(data.split(':')[1]) print(y_prime) if x_prime != 0 and y_prime != 0: if x_prime == -1 or y_prime == -1: break u = random.randint(0, x_prime) v = random.randint(0, y_prime) w = u * v w_prime = util.closest_large_prime_finder(w) u_a, u_b = util.two_party_secret_share(u, x_prime) v_a, v_b = util.two_party_secret_share(v, y_prime) w_a, w_b = util.two_party_secret_share(w, w_prime) alice_msg = str(u_a) + ':' + str(v_a) + ':' + str(w_a) bob_msg = str(u_b) + ':' + str(v_b) + ':' + str(w_b) alice_conn.send(alice_msg.encode()) bob_conn.send(bob_msg.encode()) break serv.close()
import socket from Util import Util util = Util() import time serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serv.bind(('127.0.0.1',8082)) serv.listen(1) trusted_initializer = socket.socket(socket.AF_INET, socket.SOCK_STREAM) trusted_initializer.connect(util.server_address_builder()) desired_input = input('Please input an integer: \n') desired_operation = input('Secure Two-party Computation for addition or multiplication (a/m): \n') y = int(desired_input) prime = util.closest_large_prime_finder(y) y_a, y_b = util.two_party_secret_share(y,prime) alice_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) alice_client.connect(('127.0.0.1',8081)) alice_client.send(str('y_a:' + str(y_a)).encode()) if desired_operation == 'a': trusted_initializer.send('y_prime:-1'.encode()) initialized_share = str(trusted_initializer.recv(1024).decode()) x_b = -1 alice_sub_addition = -1 alice_addition = -1 while True: alice_conn, addr = serv.accept() data = str(alice_conn.recv(4096).decode())
from Util import Util util = Util() import time serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serv.bind(('127.0.0.1', 8081)) serv.listen(1) trusted_initializer = socket.socket(socket.AF_INET, socket.SOCK_STREAM) trusted_initializer.connect(util.server_address_builder()) desired_input = input('Please input an integer: \n') desired_operation = input( 'Secure Two-party Computation for addition or multiplication (a/m): \n') x = int(desired_input) prime = util.closest_large_prime_finder(x) x_a, x_b = util.two_party_secret_share(x, prime) bob_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) bob_client.connect(('127.0.0.1', 8082)) bob_client.send(str('x_b:' + str(x_b)).encode()) if desired_operation == 'a': trusted_initializer.send('x_prime:-1'.encode()) initialized_share = str(trusted_initializer.recv(1024).decode()) y_a = -1 bob_sub_addition = -1 bob_addition = -1 while True: bob_conn, addr = serv.accept() data = str(bob_conn.recv(4096).decode())
from Util import Util util = Util() import random x = 24 y = 36 prime = util.closest_large_prime_finder(x) if x > y else util.closest_large_prime_finder(y) print('Prime: ' + str(prime)) x_a, x_b = util.two_party_secret_share(x) y_a, y_b = util.two_party_secret_share(y) s_a = x_a + y_a s_b = x_b + y_b s = (s_a + s_b) print('Result of secure computation: ' + str(s)) print('Result of simple addition: ' + str(x+y))