chkpass

F.6. chkpass

Этот модуль реализует тип данных 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)

F.6.1. Автор

D'Arcy J.M. Cain ()

Back to top

(С) Виктор Вислобоков, 2008-2023