Документация по PostgreSQL 9.1.1 | ||||
---|---|---|---|---|
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>
)