Я делаю клиент-серверную программу, реализующую алгоритм Диффи-Хеллмана
Клиент:
from __future__ import print_function
import math
import socket
host = "localhost"
port = 1200
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
print("Connected with Server")
sharedPrime = 23 # p
sharedBase = 5 # g
aliceSecret = 6 # a
s.send(bytes(aliceSecret))
bobSecret=s.recv(1024)
# Alice Sends Bob A = g^a mod p
A = (sharedBase**aliceSecret) % sharedPrime
s.send(bytes(A))
B=s.recv(1024)
B=B.decode()
# Alice Computes Shared Secret: s = B^a mod p
aliceSharedSecret = (int(B)** aliceSecret) % sharedPrime
print( "Alice Shared Secret: ", aliceSharedSecret )
Код сервера в основном такой же, за исключением того, что он обрабатывает сторону "Боба"алгоритм.Моя проблема начинается с этой строки:
aliceSharedSecret = (int(B)** aliceSecret) % sharedPrime
, которая дает мне эту ошибку:
invalid literal for int() with base 10: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Я вернулся, чтобы увидеть, что на самом деле означает "B", и оно просто пустое.Что я делаю не так?