Ошибка cryptography.fernet.InvalidToken при расшифровке строки из файла (с использованием ключа из файла)Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка cryptography.fernet.InvalidToken при расшифровке строки из файла (с использованием ключа из файла)

Сообщение Anonymous »

Я все еще новичок и создаю простой менеджер паролей на Python с использованием модуля шифрования. Пользователь может ввести имя программы и пароль, они шифруются, а затем записываются в файл. Они также могут просматривать пароли, добавленные в файл. Когда пользователь выбирает это, он вводит имя программы/службы, которую пытается найти, и он возвращает соответствующий пароль, расшифровывая файл построчно и проверяя, есть ли имя программы в этом файле. Надеюсь, это имеет смысл.
Проблема в том, что я получаю повышение InvalidToken cryptography.fernet.InvalidToken, когда программа пытается расшифровать строки из файла после выбора " view» и ввода имени, даже если файл не пуст. Я действительно не понимаю, почему, поскольку ключ не генерируется в программе, он хранится в файле, поэтому при каждом запуске программы считывается один и тот же ключ. Я уже читаю файл в байтах, а не в строках. У меня также есть еще одна более простая программа, которая использует тот же файл и может успешно шифровать и расшифровывать файл, поэтому у меня такое чувство, что я допустил ошибку где-то еще.
Вот моя программа ( ошибка возникает в строке 58):

Код: Выделить всё

from cryptography.fernet import Fernet

#Get key from file
filekey = open("filekey.key", "rb")
key = filekey.read()
fernet = Fernet(key)
filekey.close()

cmd = "" #Force entry to loop

#Run until user quits
while cmd != "quit":
cmd = input("[add | view | quit] ")

#Input validation loop
while cmd not in ["add", "view", "quit"]:
print("Not a valid command. Try again.")
cmd = input("[add | view | quit]")

#Run if user enters "add"
if cmd == "add":

#Get user input for name and password
name = input("Enter name: ")
pwd = input("Enter password: ")

#Concatenate and encode input
new_line = name + " " + pwd
byte_new_line = new_line.encode()

#Encrypt and convert to string
enc_line = fernet.encrypt(byte_new_line)
enc_line_str = str(enc_line)

#Write string to file
outfile = open("passwords.data", "a")
outfile.write(enc_line_str)
outfile.close()

#Run if user enters "view"
if cmd == "view":
found = False #Keep track of whether name is present in file

#Get user input for name to find
search = input("Name to search for: ")

#Open file to search from
infile = open("passwords.data", "rb")
line = infile.readline()

#Read each line of file
while line != "":
line = infile.readline()

#Decrypt line and convert to string
line_dec = fernet.decrypt(line) #Error here
line_dec_str = str(line_dec)

#Get index of name in decoded string
index = line_dec_str.find(name)

#Run if name is found in string
if index != -1:

#Change found to True and print string
found = True
print(line_dec_str)

#Display error if name not found
if found == False:
print("Error: name not found in file. Try again.")

infile.close()
Будем благодарны за любую помощь ☺️

Подробнее здесь: https://stackoverflow.com/questions/787 ... -using-key
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Исключено: 'isopoh.cryptography.securearray.lockfailexception' in isopoh.cryptography.securearray.dll
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Исключено: 'isopoh.cryptography.securearray.lockfailexception' in isopoh.cryptography.securearray.dll
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Получить System.Security.Cryptography.CryptographicException при расшифровке
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Получить System.Security.Cryptography.CryptographicException при расшифровке
    Anonymous » » в форуме C#
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Получить System.Security.Cryptography.CryptographicException при расшифровке: указанный вектор инициализации (IV) не соо
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»