本モジュールは暗号化したパスワードを格納するために設計されたchkpassデータ型を実装します。 各パスワードは入力時に自動的に暗号化形式に変換され、常に暗号化して格納されます。 比較する際は単に平文のパスワードと比較してください。 比較関数は比べる前に平文を暗号化します。
パスワードが簡単にクラックできる場合にエラーを報告する計画がコード内にあります。 しかし、現在は何も行わない単なるスタブです。
コロンを入力文字列の前に付けると、すでに暗号化済みのパスワードとみなされ、それ以上暗号化することなく格納されます。 これにより事前に暗号化されたパスワードを入力することができます。
出力時はコロンが前に付けられます。
これにより、暗号化を再度行うことなくパスワードのダンプと再ロードを行うことができます。
コロンがない暗号化パスワードが必要ならば、raw()関数を使用してください。
これにより、ApacheのAuth_PostgreSQLモジュールのような作業にこの型を使用することができます。
暗号化は標準Unix関数crypt()を使用します。
このため、この関数にある全ての制限の影響を受けます。特にパスワードの先頭8文字のみが考慮されることに注意が必要です。
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>)