| PostgreSQL 9.5.3 中文手册 | |||
|---|---|---|---|
| 上一页 | 上一级 | 附录 F. 额外提供的模块 | 下一页 |
这个模块实现了一种数据类型chkpass,它被设计用来存储加密的口令。每一个口令被自动地转换为加密的形式,并且总是以加密形式存储。要比较,可简单地与一个明文口令比较,并且比较函数将会对明文口令先加密。
代码中规定如果口令被判断为容易被攻破,将会报告一个错误。但是,目前这里只是一个分支,它并不做任何事情。
如果你在一个输入字符串前放一个冒号,它就被假定为一个已加密的口令,并且在存储时不会被进一步加密。这个特性使得已经被加密的口令能够被录入。
在输出时,将会预先考虑冒号。这使得我们可以在转储和载入时不需要重新加密它们。如果你想要没有冒号的加密口令,则可使用raw()函数。它允许你把该类型和类似Apache的Auth_PostgreSQL模块的东西一起使用。
加密操作使用标准的Unix函数crypt(),并且因此它也受到该函数的常见限制的影响;注意只有口令的前八个字符被考虑。
注意chkpass数据类型是不能被索引的。
使用例子:
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) D'Arcy J.M. Cain (<[email protected]>)