I've a problem in this SELECT:
Предпосылка:
Я сделал скрипт, который создает базу данных с «ключом», который является зашифрованным паролем -> код шифрования:
import base64
import os
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
password_provided = "password" # input
password = password_provided.encode() # Convert in type byte
salt = b'\xaes\xff\x80\xe2| (\xfcG\xbdk\xedxb9\x15n7'
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=100000,
backend=default_backend()
)
key = base64.urlsafe_b64encode(kdf.derive(password)) #can only use kdf once
print(key)
Теперь я 'Я пытаюсь сделать AUTH с методом POST, я начинаю пытаться с помощью некоторого SELECT для «поиска» пароля для журнала и найти метод для сравнения строки, не зашифрованной с зашифрованной строкой для входа в систему, я пытаюсь:
mycursor = mydb.cursor()
sql = "SELECT password FROM users WHERE password = %s", (key) #Problem!
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
Мой вывод:
** File "login.py", line 12, in <module>
mycursor.execute(sql)
File "/Users/jhon/prova/lib/python3.7/site-packages/mysql/connector/cursor.py", line 536, in execute
stmt = operation.encode(self._connection.python_charset)
AttributeError: 'tuple' object has no attribute 'encode'
**
Я пытаюсь сделать "key1 = key.encode ()", но это неправильно ... Спасибо всем.