[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 メーリングリストの案内