| Документация по PostgreSQL 8.4.2 | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Appendix F. Модули, поставляемые дополнительно | Fast Forward | Next |
Этот модуль реализует тип данных chkpass, который разработан для хранения зашифрованных паролей. Каждый пароль после ввода автоматически преобразуется в шифрованный вид и всегда хранится в шифрованном виде. Для проверки пароля, происходит простое сравнение пароля в тестовом виде, а функция сравнения сама зашифрует его перед сравнением.
В код встроена возможность выдачи сообщений об ошибке, если пароль будет определён как легко взламываемый. Однако, в данный момент такая возможность просто есть в наличии, но ничего не делает.
Если строка, которую вы вводите, начинается с двоеточия, то она считается уже зашифрованным паролем и сохраняется без выполнения шифрования. Это позволяет вводить пароли, которые были зашифрованы ранее.
При выводе, сперва выводится двоеточие. Это позволяет делать дамп и
перезагружать пароли без их перешифровки. Если вы хотите, зашированный
пароль без двоеточия затем использует функция raw(). Это
позволяет вам использовать данный тип, например с такими приложениями
как Auth_PostgreSQL модуль в Apache.
Шифрование осуществляется с помощью стандартной функции 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>)