Я пытаюсь создать файл с зашифрованным именем пользователя, паролем и именем компьютера при входе пользователя в систему. И те же данные, которые я хочу использовать для аутентификации данных, но сначала дешифруя их. Я пытаюсь использовать что-то, что встроено в python и просто.Простое шифрование и дешифрование строк с помощью bz2 в Python
import os
import bz2
os.chdir("D:/test")
encrypted_username = bz2.compress('username')
encrypted_password = bz2.compress('password')
computer_name = os.environ['COMPUTERNAME']
encrypted_computer_name = bz2.compress(computer_name)
f = open("Session.dat", "w")
f.write(encrypted_username + '\n')
f.write(encrypted_password + '\n')
f.write(encrypted_computer_name)
f.close()
f = open("Session.dat", "r")
data = f.read()
d_data = bz2.decompress(data)
f.close()
print(d_data)
Но когда я дешифрую данные в файле и распечатаю его. Я получаю ответ, как показано ниже. Почему я не получаю пароль и имя компьютера? Спасибо.
username
Вы должны «распаковывать» строки в файле один за другим в цикле: 'd_data = [bz2.decompress (строка) для строки в f]'. – alecxe
Да, я понял, что команда read() не читает весь файл. Но иногда имя пользователя или пароль слишком длинны, что данные хранятся в файле в двух строках. В этом случае я получаю сообщение об ошибке: # Ошибка: ValueError: file строка 3: не удалось найти конец потока # Как я могу это преодолеть? –
zingy
Шифрование и сжатие - это две разные вещи. – hd1