[pgsql-jp: 37633] パスワードのハッシュのアルゴリズムを知りたい

ToshiharuImanari zbg29998 @ olive.zero.ad.jp
2006年 11月 7日 (火) 09:59:02 JST


(概要)
8.1にてroleのパスワードがpg_authidテーブルに格納される場合、
通常のmd5sumアルゴリズムによるハッシュ値とは別のものが格納される
ようです。

pg_authidに格納されているハッシュ値を求める方法を知りたいです。


(詳細)
すなわち pg_authidテーブルのものは、

postgres=# create role hoge with password 'hogepassword';
postgres=# select rolname, rolpassword from pg_authid where rolname='hoge';
 rolname |             rolpassword
---------+-------------------------------------
 hoge    | md52f8faa8538b82ceb80b02c91892412f1 ・・・・・(1)
(1 row)

ですが、


Linuxのmd5sumでは、

[hoge @ fuga]$ echo -n 'hogepassword' | md5sum
7c5fecf43f71cad0d8cb0af26a4d2c62  - ・・・・・(2)

ですし、


また、PostgreSQLのdigest関数(contrib)では

postgres=# select encode(digest('hogepassword', 'md5'), 'hex');
              encode
----------------------------------
 7c5fecf43f71cad0d8cb0af26a4d2c62   ・・・・・(3)
(1 row)

となっています。

なぜ、(1)は(2)や(3)と違う値になってしまうのでしょうか。

いろいろなサイトのJavaのサンプルコードから、(2)(3)の結果は、求められる
ようになりました。
しかし、このpg_authidに格納されている(1)は、仕組み自体がわからず
Javaで再現できていません。
Javaが一番ありがたいのですが、SQL関数でも求められれば大変
助かります。

宜しくお願い致します。



pgsql-jp メーリングリストの案内