Postgresql 博士后课程比较';包含';而不是';相等';

Postgresql 博士后课程比较';包含';而不是';相等';,postgresql,compare,equals,where-clause,Postgresql,Compare,Equals,Where Clause,我注意到postgres使用“包含”和“不相等”来比较加密文本。 要复制,请使用以下命令: create table "user" (uname text, password chkpass); insert into "user" values ('user1', 'password') select * from "user" where uname = 'user1' and password = 'password1' 这是一个重大问题 有人注意到了吗?有人能给我一个临时的解决方案吗?

我注意到postgres使用“包含”和“不相等”来比较加密文本。 要复制,请使用以下命令:

create table "user" (uname text, password chkpass);
insert into "user" values ('user1', 'password')
select * from "user" where uname = 'user1' and password = 'password1'
这是一个重大问题


有人注意到了吗?有人能给我一个临时的解决方案吗?

这不是bug。这只是加密程序内部使用的crypt()函数的一个限制

我注意到postgres使用“包含”和“不相等”来比较加密文本

它不是使用“contain”,而是检查要比较的文本的前八个字符。正如在报告中提到的

加密使用标准Unix函数crypt(),因此它受到该函数的所有常见限制;值得注意的是,只考虑密码的前八个字符


我建议您使用其他算法加密密码(如上所述),然后将其存储在数据库中,而不是使用postgres chkpass。

您忘记问问题了。它看起来更像是一个bug报告,你应该和Postgres的开发者们讨论一下……对不起,我更新了,因为我现在不能搬出Postgres,我在寻找任何解决方案,即使是临时的或是一些解决办法……谢谢!如果要使用pgcrypto模块而不是chkpass,可以阅读此内容。它为postgresql提供了大量加密函数。