PostgreSQL 9.3.1 中文手册 | ||||
---|---|---|---|---|
上一页 | 上一级 | 附录 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 (<darcy@druid.net>
)