У меня есть текст, который я хочу закодировать. Как только он закодирован, в нем есть «\ n». Затем у меня есть Python добавить B '\ N', чтобы добавить новую строку. Мой сокет считает, что первый \ n - это конец файла, когда он на самом деле является частью текста.
Я просмотрел свой код, и это просто то, что я не знаю, как исправить.
Генерация двоичных данных
print("Calculating Key")
sharedKey = str((int(recieverPublicKey) ** int(privateKey)) % int(mod))
sharedKey = hashlib.sha256(sharedKey.encode())
sharedKey = sharedKey.hexdigest()
sharedKey = sharedKey[0:32]
print("Encrypting Key")
initVector = 16 * '\x00'
sharedKey = bytes(str(sharedKey), encoding='utf-8')
encryptor = AES.new(sharedKey, AES.MODE_CBC, initVector)
encryptedKey = encryptor.encrypt(dencryptionKey)
print(encryptedKey)
time.sleep(0.1)
print("Sending Encryption Key")
sock.sendall(encryptedKey + b'\n')
Декодирование
sharedKey = str((int(senderPublicKey ** int(privateKey))) % int(mod))
sharedKey = hashlib.sha256(sharedKey.encode())
sharedKey = sharedKey.hexdigest()
sharedKey = sharedKey[0:32]
initVector = 16 * '\x00'
print("Recieving Encryption Key")
time.sleep(0.1)
print("Decrypting Key")
encryptedKey = clientFile.readline()
print(encryptedKey)
encryptedKey = encryptedKey.strip().decode()
print(encryptedKey)
initVector = 16 * '\x00'
sharedKey = bytes(str(sharedKey), encoding='utf-8')
decryptor = AES.new(sharedKey, AES.MODE_CBC, initVector)
encryptedKey = encryptedKey[2:-2]
print(encryptedKey)
for x in range(8):
encryptedKeyPart = encryptedKey[0:16]
print(encryptedKey)
encryptedKey = encryptedKey[16:-1]
dencryptionKey = dencryptionKey + decryptor.decrypt(encryptedKeyPart).decode('utf-8')
print(dencryptionKey)
Выход на приемную сторону
b';l\xb8\xd7{\xa7Wt\x99\xb6\xc2\xfa\xf8\x8c\xe6\xd7=\x1d\x8e\x0b\r\x8e\xa4\xee\xa3\x84\xca\xfd\x91L\xda\xbb\x82\xc3\x93\x0f\xec\xd9o\xa7V\x1fs\x89{\x87\xd3\xf0\xc3\xba\x8f\xd9\xd0v\x18k-\xd9\xb1C&Y\x82+\xb8\xb6\x85:\xfd\x9f\x13\xea\xd8v\xadG\x11_\xbf4r\xb6\xa3\n'
Вывод на отправляющей стороне
b';l\xb8\xd7{\xa7Wt\x99\xb6\xc2\xfa\xf8\x8c\xe6\xd7=\x1d\x8e\x0b\r\x8e\xa4\xee\xa3\x84\xca\xfd\x91L\xda\xbb\x82\xc3\x93\x0f\xec\xd9o\xa7V\x1fs\x89{\x87\xd3\xf0\xc3\xba\x8f\xd9\xd0v\x18k-\xd9\xb1C&Y\x82+\xb8\xb6\x85:\xfd\x9f\x13\xea\xd8v\xadG\x11_\xbf4r\xb6\xa3\ng\xb0\xde\xa9jW\x8d\x85T\x06mR\x0e\xfe\xcar\xaa\x17\x98j\x92lV\x07\xf2}\xad%\x0c\x01\xe4\xf1\xd7=\x8a\xa7\xeb\xd2\xb2c\xb8\x88\xb0\x9b\n'
Я хотел, чтобы он получил все данные и начал расшифровывать текст. Программа останавливается на \ n, который должен быть частью текста, и не читает остальное, в результате чего .decode ('utf-8') выдает ошибку, потому что она не завершена.