gpt4 book ai didi

python - MySQL-用Python替换列的所有字符

转载 作者:行者123 更新时间:2023-11-29 16:29:09 26 4
gpt4 key购买 nike

所以我正在用 Python 3.7 编写一个 Python 程序,并通过一个名为 PyMySQL 的模块与我的数据库进行交互。它基本上允许您通过 Python/您的程序在数据库上运行查询。

我一直在搜索 SO 和 Google 来寻找解决我的问题的方法,但我什么也没找到,所以我要询问一下。

假设“用户”表中有 3 列:“用户 ID”、“用户名”和“密码”。我想用星号 (*) 每个字符替换“密码”列下的各种字符(字母、数字和特殊字符),如果可能,我希望在创建新条目时进行替换,所以我不必在整个数据库的所有列上加载负载,而是在单个新条目上加载负载。

最佳答案

第一;一个警告。不要不要继续您正在尝试做的事情。这是一个严重的安全风险,实际上会使事情变得更糟。首先,你不应该有明文密码,但将它们全部转换为 * 会使情况变得更糟,因为那时我所要做的就是猜测序列长度,从而大大降低复杂性(更不用说,使所有密码无效)您的用户凭据)。

您应该使用库来生成密码哈希值。有多个,我选择 Flask 使用的基本一个,因为它不需要设置,并且还会对密码加盐。您还可以使用hashlib等等

from werkzeug.security import check_password_hash, generate_password_hash

password = 'hello123'
pass_hash = generate_password_hash(password)
print(pass_hash) # STORE THIS

print(check_password_hash(pass_hash, 'hello')) # False
print(check_password_hash(pass_hash, 'hello123')) # True

不要尝试创建自己的哈希算法,始终依赖专业软件包。

您应该能够简单地解决此问题:

cursor.execute("""
SELECT user_id, password
FROM users
""")
data = cursor.fetchall()
hashed = []
for user, password in data:
hashed.append([generate_password_hash(password), user])

cursor.executemany("""
UPDATE users
SET password = %s
WHERE user_id = %s
""", (hashed))

关于python - MySQL-用Python替换列的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54052298/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com