【问题标题】:How to decrypt item in SQLite database using python 3如何使用 python 3 解密 SQLite 数据库中的项目
【发布时间】:2015-05-03 18:31:49
【问题描述】:

我正在尝试验证是否在我的网站上的密码输入框中输入了正确的密码。目的是如果输入的密码与在用户名输入框中输入的“usernick”对应的 SQLite 表中的密码匹配,则返回 true。

def check_login(db, usernick, password):
    """returns True if password matches stored"""
    cursor = db.cursor()
    cursor.execute("SELECT password FROM users WHERE nick='%s'" % usernick)
    passcheck = cursor.fetchone()
    print(usernick)
    print(password)
    print(passcheck)
    if password == passcheck:
        return True
    else:
        return False

我使用打印来查看我的代码哪里出错了。正确的用户名和密码正在输入到函数中,但 print(passcheck) 正在输出: ['48181acd22b3edaebc8a447868a7df7ce629920a']

我现在意识到这是因为密码被解密了。如何解密密码?

【问题讨论】:

    标签: python sqlite encryption


    【解决方案1】:

    你没有。您对用户输入的密码进行加密,并检查它是否与数据库中的加密版本匹配。

    但是,如果没有任何有关数据库最初是如何创建的详细信息,则无法进一步帮助您。

    编辑

    请记住,fetchone() 总是返回一个元组,即使您只选择了一个列。做passcheck = cursor.fetchone()[0]

    【讨论】:

    • 啊,好的,谢谢。这是我应该做的。所以我加密了进入函数的密码。但是我从数据库中检索的密码不匹配,因为我从数据库中检索的密码如下所示:('48181acd22b3edaebc8a447868a7df7ce629920a',)。有没有办法去掉括号和引号?
    • 当我使用 passcheck = cursor.fetchone()[0] 时,我收到一条错误消息,提示“nonetype”对象不可下标。我的 passcheck 打印显示了数据库中的所有密码和用户名,每个用户名有 2 个加密的通行证值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多