石井です.
# こういう質問はpgsql-jpに投げた方がよいと思いますが...
> こんにちは、NIDA といいます。
> # Vine Linux 3.1 に、postgresql の 7.4.7 です。
>
> postgresql から "select * from pg_shadow;" をしたところ、
>
> ユーザーパスワードのところに、
> "md5621f4bf792982670d1c42988c1495a4b" とか
> "md51f6d86901b4d1d4fbefdeb94e99f3447" と
> 表示されました。
>
> これらの元が 'password' であることを確認したいのですが、
> どうしたらいいのでしょうか。
>
> # 設定したパスワードは、いずれも 'password' です。
> # プライベートパソコンで、勉強の為に設定しただけです。
>
>
> echo -n 'password' | md5sum をしたところ、
> "5f4dcc3b5aa765d61d8327deb882cf99"
> と表示されました。
>
> なんどやっても同じ値が出てきますが、
> ユーザーパスワードのものは、同じ文字列('password')でも
> 異なったものになっています。
> # "md5621f4bf792982670d1c42988c1495a4b" と
> # "md51f6d86901b4d1d4fbefdeb94e99f3447" 。
>
> オリジナルが同じなら、md5 の値も同じだと思ったんですが
> 違うのでしょうか。
>
> それとも、"1f6d86901b4d1d4fbefdeb94e99f3447" は、
> md5 の値ではないのでしょうか。
単に,PostgreSQLが内部でやっている計算通りにしないから結果が一致しない
だけでしょう.
PostgreSQLでは,md5計算の元になるオリジナル文字列は生パスワードではな
く,ユーザ名を連結したものになっています.たとえば,ユーザ名foo,パス
ワードがbarなら,md5(barfoo)です.
--
Tatsuo Ishii