首页 > 解决方案 > 从 Python 中检索 PostgreSQL 哈希密码

问题描述

我在某处遗漏了一些东西。我有以下 Python3 代码来插入用户和密码

INSERT INTO table_name (emailAddress, password) 
    VALUES(%s, crypt(%s, gen_salt('bf'))) 
    ON CONFLICT (emailAddress) DO NOTHING
    RETURNING memberId;

这似乎工作正常。它在数据库中插入了一个很好的散列密码,但我在这里查看(https://www.postgresql.org/docs/8.3/pgcrypto.html)并使用以下代码来检索它:

SELECT * from table_name 
    WHERE emailAddress='{email_addy}' 
    AND password=crypt('{password}', '{password}');

显然,查询不断返回。有人可以指出我如何获得我想要的信息的方向吗?我猜哈希不匹配?

标签: python-3.xpostgresqlhashcryptography

解决方案


您两次为“crypt”提供相同的参数。

相反,您需要为其提供明文密码和哈希列。

AND password=crypt('{password}', password);

推荐阅读