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]>
)