PORT = 8766 socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) socket.bind((HOST, PORT)) socket.listen(1) print('Waiting for connect from client ...') # コネクションとアドレスを取得 connection, address = socket.accept() print('Client connected: ', address) print('Key bits ?') bits = int(input('> ')) print('OK, Your', str(bits)+'-bit keys are:') pk, sk = ElGamal.gen_key(bits=bits) print('public:', pk) # 公開鍵 print('secret:', sk) # 秘密鍵 line = str(pk[0])+' '+str(pk[1])+' '+str(pk[2]) connection.send(line.encode("UTF-8")) # 公開鍵を送る print('Given the client the public key ...') data = connection.recv(4096).decode() # クライアントからの応答を確認 print('Client:', data) # 無限ループ byeの入力でループを抜ける while True: # クライアントからデータを受信 recvline = ElGamal.decrypt(pickle.loads(connection.recv(4096)), pk, sk) # デシリアライズ -> 復号 if recvline == 'bye':