Здравствуйте! При отправке сообщения через сокет необходимо передавать байтовую строку, которая из вида, к примеру, b'\xda\xe5\xb0%\x0e\xd7\x00\xb8\xbd\xf5{N\x84sK переходит в вид Ъе°%Ч ёЅх{N„ при применении метода decode('windows-1251'). Последняя строка записывается в лог-файл. При старте программы читается каждая такая строка, к ней применяется метод encode('windows-1251'), а к его результату применяется метод дешифрования алгоритмом DES - des.decrypt(). Возникает ошибка (где i - строка):
print(des.decrypt(i.encode('windows-1251')).decode())
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 16: invalid start byte
Как нормально прочитать строки из файла и их расшифровать? С расшифровкой передаваемых через сокет строк такой возни нет. Если записывать в файл с иным аргументом метода encode, то файл останется пустым.
Это запись в файл зашифрованных сообщений с датой и временем
Это попытка расшифровки из файла
print(des.decrypt(i.encode('windows-1251')).decode())
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 16: invalid start byte
Как нормально прочитать строки из файла и их расшифровать? С расшифровкой передаваемых через сокет строк такой возни нет. Если записывать в файл с иным аргументом метода encode, то файл останется пустым.
Это запись в файл зашифрованных сообщений с датой и временем
Python:
ext_encrypted_message = datetime.datetime.now().date().strftime('%x ') + des.decrypt(encrypted_message).decode()
padded_message = pad(ext_encrypted_message.encode())
log_message = des.encrypt(padded_message)
logtxt = open(key.get() + '_history', 'a')
logtxt.write(log_message.decode('windows-1251')+'\n')
logtxt.close()
Python:
logtxt = open(key.get() + '_history', 'r')
list1 = logtxt.read()
logtxt.close()
list1 = list1.split('-325764875634785')
for i in list1:
print(des.decrypt(i.encode('windows-1251')).decode()) #вывод строки с применением методов
print(len(list1))
for i in list1:
log.configure(state=NORMAL)
log.insert(END, i) # зашифрованную строку с абракадаброй из символов выводит в виджет ScrolledText
log.configure(state=DISABLED)