'%s\n'%ligne
изменяет ваши данные.Например, если я сделаю следующее:
>>> with open('afile.txt', 'w') as fh:
for i in range(2):
fh.write('%s\n'%b'hi there')
12
12
>>> with open('afile.txt', 'rb') as fh:
for line in fh:
print(line)
b"b'hi there'\n"
b"b'hi there'\n"
Проблема здесь заключается в преобразованиях типов, которые вы делаете.Операции Fernet ожидают bytes
, и вы сохраняете зашифрованные значения как string
s.Когда вы конвертируете объект bytes
в string
, вы не получаете точно , какой была эта строка байтов.Чтобы избежать этого, не конвертируйте типы
with open('.\\TEST\\text_encrypt.txt', 'wb') as pt:
# join supports byte-strings
to_write = b'\n'.join(listAll)
pt.write(to_write)
# Now I can read a bytes object directly
with open('.\\TEST\\text_encrypt.txt', 'rb') as fh:
# this is a single bytes-string with b'\n' chars inside it
contents = fh.read()
# byte-strings also support split
ciphers = contents.split(b'\n')
for cipher in ciphers:
print(key.decrypt(cipher))