【问题标题】:Store MD5 hash in SQLITE3 database in python在 python 中将 MD5 哈希存储在 SQLITE3 数据库中
【发布时间】:2017-06-03 17:10:05
【问题描述】:

目前我的数据库将“密码”存储为文本,但这表示它不起作用,如下所示(密码也转换为 MD5 哈希):

密码“功能”:

user_in = input("Please enter a password next to this text: \n")
Password = hashlib.md5()
Password.update(user_in.encode("utf-8"))

错误信息:

sqlite3.InterfaceError: Error binding parameter 1 - probably unsupported type.

我想知道的是如何在 SQLITE3 的数据库中存储哈希

编辑:

cursor=db.cursor()   
sql="insert into Accounts (Username, Password) values(?,?)"
cursor.execute(sql, (Username, Password))                      
db.commit()  

编辑 2:

user_in = input("Please enter a password next to this text: \n")
Password = hashlib.md5()
Password.update(user_in.encode("utf-8"))
Password.hexdigest()

【问题讨论】:

  • 您是在运行python函数时遇到错误,还是在实际提交到SQLServer时遇到错误?
  • @Polymer 你好。输入用户名和密码后出现错误,所以当它被提交到 SQL 服务器时
  • 你能添加你用来提交到服务器的代码吗?同样在您的服务器上,您的密码设置为哪种类型?
  • @Polymer 设置为文本。我将添加上面的代码。
  • 您是否使用 password.hexdigest() 作为 Password 变量?

标签: python hash sqlite


【解决方案1】:

确保 cursor.execute 函数的参数实际上是字符串,这样你就可以了! :)

cursor.execute(sql, (str(Username), str(Password)))

这是通过在参数传递期间强制转换它们来完成的

【讨论】:

  • 嘿聚合物,我知道这有点不相关,但我想问一个问题。如果我想添加登录功能,如何检查用户名和密码是否相关?
  • 我知道我必须将用户的猜测更改为 MD5 以对应数据库中的猜测,但我将如何确保它是该用户的密码。
  • 如何查看用户名是否在数据库中,然后查看密码是否正确
  • 例如。如果用户名 IN Accounts.db(显然语法不正确)
  • 基本上,您需要使用提供的用户名,进入您的数据库并获取哈希密码。然后,您使用相同的 md5 对他们输入的密码进行哈希处理,并将其与数据库中的密码进行比较。如果两个哈希值相同,让他们进入。如果不是,他们输入了错误的密码。如果您仍然对此感到困惑,请查看此视频,由计算机爱好者、精彩视频和频道youtube.com/watch?v=8ZtInClXe1Q 提供。为了清楚起见,MD5 哈希是“唯一的”。它只能由一组字节产生,因此为什么可以在这种情况下使用它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
  • 1970-01-01
相关资源
最近更新 更多