F.8. chkpass

该模块实现了用于存储加密密码的数据类型chkpass。每个密码在 Importing 时都会自动转换为加密形式,并始终以加密方式存储。要进行比较,只需与明文密码进行比较,比较功能就会在比较之前对其进行加密。

如果确定密码容易破解,则代码中有规定报告错误。但是,这只是一个不执行任何操作的存根。

如果在 Importing 字符串之前加冒号,则假定该密码是已经加密的密码,并且无需进一步加密即可存储。这样可以 Importing 以前加密的密码。

在输出时,冒号是前置的。这样就可以转储和重新加载密码,而无需重新加密它们。如果您想要不带冒号的加密密码,请使用raw()函数。这使您可以将类型与 Apache 的Auth_PostgreSQL模块一起使用。

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

请注意,chkpass数据类型不可索引。

Sample usage:

test=# create table test (p chkpass);
CREATE TABLE
test=# insert into test values ('hello');
INSERT 0 1
test=# select * from test;
       p
----------------
 :dVGkpXdOrE3ko
(1 row)

test=# select raw(p) from test;
      raw
---------------
 dVGkpXdOrE3ko
(1 row)

test=# select p = 'hello' from test;
 ?column?
----------
 t
(1 row)

test=# select p = 'goodbye' from test;
 ?column?
----------
 f
(1 row)

F.8.1. Author

达西·凯恩(<[email protected]>)