django TypeError:参数应为类似字节的对象或ASCII字符串,而不是“dict”

lmvvr0a8  于 2023-03-04  发布在  Go
关注(0)|答案(1)|浏览(273)

我在解密加密消息时遇到这个错误,我从django views的数据库中提取了加密消息pw = donator.objects.filter(emai=email).values('passw'),并在decrypt_message()函数中传递了pw对象,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'
8ftvxx2r

8ftvxx2r1#

您应该将与passw关联的项传递给函数,因此:

pws = donator.objects.filter(emai=email).values('passw')
for pw in pws:
    #               use pw['passw'], not pw ↓
    decrypt_message(encrypted_message, pw['passw'])

相关问题