Я пытаюсь проверить ввод пароля пользователя с помощью пароля (зашифрованного) в MySQLdb: Работа с mysqlconnector, python 3.7
encryptor.py: из cryptography.fernet import Fernet
#---key-----
key = b'Ys_G_ziOS1AFs6X-jD3rtgsh77b3HpF7A-yiGpH-5Fg='
cipher_suite = Fernet(key)
cipher_text = cipher_suite.encrypt(b"password") # Convert in byte
print(cipher_text)
key1 = b'Ys_G_ziOS1AFs6X-jD3rtgsh77b3HpF7A-yiGpH-5Fg='
cipher_suite1 = Fernet(key1)
chiper_text1 = b'gAAAAABcHA2-58GwFxKzMzZRJsNV269_Nc-xvabFJcXV8yf0BuKI2XtD7211Vusf_hMXNrvK0glamHuoJhwPegP9iFRjXpANcg=='
unciphered_text = (cipher_suite1.decrypt(chiper_text1))
print(unciphered_text)
теперь форма простая <form method='POST' action='cgi-bin/file.py'>
с именем пользователя, именем = имя пользователя, паролем, именем = паролем
import mysql.connector
from config import *
from encryptor import *
import cgi, cgitb
import os
#----user/pasw params
form = cgi.FieldStorage()
username1 = form.getvalue('username')
password1 = form.getvalue('password')
print(f"Username: {username1} Password: {password1}")
#Search password in DB
mycursor = mydb.cursor()
mycursor.execute("USE continental")
sql_password = "SELECT password FROM users WHERE username ='root'"
#assword23 = "SELECT password FROM users WHERE user = %s", (username1,)
mycursor.execute(sql_password)
find_password = mycursor.fetchall() # ????
unciphered_text1 = (cipher_suite1.decrypt(find_password))#error
if password1==unciphered_text1:
print("ok")
else:
print(unciphered_text1)
unciphered_text1 = (cipher_suite1.decrypt(find_password))
File "/Users/jhon/prova/lib/python3.7/site-packages/cryptography/fernet.py", line 74, in decrypt
timestamp, data = Fernet._get_unverified_token_data(token)
File "/Users/jhon/prova/lib/python3.7/site-packages/cryptography/fernet.py", line 86, in _get_unverified_token_data
raise TypeError("token must be bytes.")
TypeError: token must be bytes.
token must be bytes.
Я пытался преобразовать без успеха, идея быласопоставьте входной пароль с расшифрованным паролем из базы данных, поскольку метод шифрования каждый раз генерирует новый хэш.Я понятия не имею, как исправить Я не могу исправить ошибку, fetchall () должен вернуть список, который я должен положить в байтах, в противном случае метод decrypt не работает таким образом, или, возможно, только для чтения строки в байтах (cipher_text), Не могу понять.Спасибо всем.