Расшифровка строк из файла, python 3.8

council_estate

Новичок
Пользователь
Апр 20, 2020
3
0
1
Здравствуйте! При отправке сообщения через сокет необходимо передавать байтовую строку, которая из вида, к примеру, 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, то файл останется пустым.

Это запись в файл зашифрованных сообщений с датой и временем
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)
 

Форум IT Специалистов