PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 附录 F. 额外提供的模块 | 下一页

# F.6. chkpass

该模块实现了一种用于存储加密密码的数据类型`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)

## F.6.1. 作者

D'Arcy J.M. Cain (`<darcy@druid.net>`)

上一页 | 起始页 | 下一页
btree_gist | 上一级 | citext