Итак, я получил клиент-серверную программу, которая шифрует / дешифрует строки, которые он получает из файла.Сервер правильно получает строки в правильном формате, используя .split ()
#this is correct
Geheime bericht 1
Project PAD
Wachtwoorden
Когда я хочу отправить эти данные обратно в .upper (), это приводит к клиенту вместо этого
GEHEIME BERICHT 1PROJECT PADWACHTWOORDEN
Используя .split (), он печатает слова на новой строке.Однако слова не возвращаются правильно.Это список .split ()
['GEHEIME', 'BERICHT', '1PROJECT', 'PADWACHTWOORDEN']
Это должно быть так (именно так клиент сначала отправляет его на сервер)
b'Geheime bericht 1\n'
b'Project PAD\n'
b'Wachtwoorden'
с использованием цикла forв списке печатает это как
GEHEIME
BERICHT
1PROJECT
PADWACHTWOORDEN
Как я могу решить эту проблему?Кажется, что основной источник проблемы возникает, когда я либо отправляю обратно дешифрованные, все ограниченные строки, либо когда я получаю их на стороне клиента.
Некоторый код на стороне клиента:
connectie = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connectie.connect((ipaddr, portnr))
with open('textinput.txt', 'rb') as inh:
for lijn in inh:
enc_data = publickey.encrypt(lijn.strip(), 16)
print(lijn)
connectie.send(enc_data[0])#verzend encrypted data
time.sleep(1)
#ontvang de decrypted data/strings
decrypt_data = connectie.recv(2048).decode('utf-8')
Некоторый код на стороне сервера:
with clientconnectie:
print("\nConnectie gemaakt met: " + conninfo[0] + ":" + str(conninfo[1]))
while True:
enc_data = clientconnectie.recv(2048)
if not enc_data:
break
#print encrypted data zodat je kan zien dat het encrypted is
#print(enc_data)
data = privatekey.decrypt(enc_data)#decrypt ontvangen data
#print("\nSuccesvol ontvangen en decrypt op Server:\n" +str(data.decode('utf-8')))
#verzend de strings/data in uppercase
clientconnectie.send(data.upper()) #it seems that the main problem is caused by this line