Python,使用 SQL-Connector 检查 Bcrypt 密码

Python, Bcrypt password checking with SQL-Conncector

我在我的 Python 程序中使用 SQL-Connector 和 Bcrypt,我将此密码存储在数据库中:

b$rRkfWn03an8WxtfRSMNd2ebbPrhpbkRONzsAdCmM/goV9XobpOYk6

我想检查用户输入是否与 SQL 数据库中的输入相同,我可以使用正确的 Bcrypt 函数来执行此操作,但我的问题是,当它提取该密码时它以这种格式从数据库中提取它:

[('b$rRkfWn03an8WxtfRSMNd2ebbPrhpbkRONzsAdCmM/goV9XobpOYk6',)]

显然我无法检查它,因为括号等使它们不匹配,它们需要相同才能通过。我尝试通过加密输入来做到这一点,然后检查它是否在该字符串中,但显然每次加密密码时,即使密码相同,它也会给出不同的哈希值,所以我必须使用 Bcrypt 函数,它只通过如果它们是相同的...有谁知道我如何从数据库中检索加密的密码作为没有格式化任何一方的密码?

TLDR:我如何从 SQL 数据库中检索一个字符串作为 string[('string')]

非常感谢!!!

首先,通常您不会将密码存储在数据库中。通常你存储密码中的 hash code

.

(我不擅长解释,但我会尽力而为)

Hash 的工作原理是这样的:你输入一个字符串,它会将 is 转换为一个数字。如果您输入相同的字符串,此数字将始终相同,但如果您只知道哈希码,则无法获取该字符串。然后,当您检查密码时,您创建哈希码并检查它是否与数据库中的相同。这样更安全。

现在,回答你的实际问题。我对 SQL 一无所知,但你可以 trim 像这样的字符串:

password = "(['ThisIsAVeryGoodPassword'])"

letters_to_trim_front = 3
letters_to_trim_back = -3

trimmed_password = password[letters_to_trim_front:letters_to_trim_back]

print(trimmed_password)

应该returnThisIsAVeryGoodPassword