TypeError: аргументом должен быть байтоподобный объект или ASCII-строка, а не 'dict'
Я получаю эту ошибку при расшифровке зашифрованного сообщения. Я получил зашифрованное сообщение из базы данных в django views как pw = donator.objects.filter(emai=email).values('passw')
и передал объект pw в функцию decrypt_message().
Функция decrypt_messag() выглядит следующим образом :
def decrypt_message(encrypted_message,key):
"""
Decrypts an encrypted message
"""
f = Fernet(key)
decrypted_message = f.decrypt(encrypted_message)
return decrypted_message.decode()
Сообщение об ошибке:
File "C:\Users\Neelesh Singh\workspace\BookHouse\donatorapp\views.py", line 129, in decrypt_message
f = Fernet(key)
File "C:\Users\Neelesh Singh\AppData\Local\Programs\Python\Python39\lib\site-packages\cryptography\fernet.py", line 37, in __init__
key = base64.urlsafe_b64decode(key)
File "C:\Users\Neelesh Singh\AppData\Local\Programs\Python\Python39\lib\base64.py", line 131, in urlsafe_b64decode
s = _bytes_from_decode_data(s)
File "C:\Users\Neelesh Singh\AppData\Local\Programs\Python\Python39\lib\base64.py", line 45, in _bytes_from_decode_data
raise TypeError("argument should be a bytes-like object or ASCII "
TypeError: argument should be a bytes-like object or ASCII string, not 'dict'
Вам следует передать в функцию элемент, связанный с passw
, так:
pws = donator.objects.filter(emai=email).values('passw')
for pw in pws:
# use pw['passw'], not pw ↓
decrypt_message(encrypted_message, pw['passw'])