本モジュールは暗号化したパスワードを格納するために設計された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>
)