2017-07-30 19 views
0

私は、パスワードがPostgresでどのように動作するはずかを理解しようとしています。提示パスワード文字列は、MD5暗号化形式で既にある場合は、あるとして、暗号化され保存されているPostgres:MD5パスワード/平文パスワード

ENCRYPTED /暗号化されていない、

は、だから私の暗号化されていないパスワードがあるため

https://www.postgresql.org/docs/current/static/sql-createrole.html

氏は述べています:わたしのパスワード 。

"MYPASSWORD" のMD5ハッシュは

sudo -u postgres psql meohmy -h 127.0.0.1 -d meohmy_development 

Iをやったときに、私は最初、当然のことながら、

-- See https://www.postgresql.org/docs/9.6/static/sql-alterrole.html 
ALTER ROLE "MeOhMy" 
LOGIN 
PASSWORD '48503dfd58720bd5ff35c102065a52d7' 
; 

を行い、その後、 "MYPASSWORD" を使用しようとすると48503dfd58720bd5ff35c102065a52d7

です私のsudoのパスワードを求めるプロンプトが表示され、私はPostgresの "パスワードfor meohmy"のメッセージが表示されます

私はMYPASSWORDを入力した場合

は私が入力した場合、代わりに、48503dfd58720bd5ff35c102065a52d7が、私はサインインでき

FATAL: password authentication failed for user "[email protected]" 

を得る。

私は何を理解していないのですか?

+0

ハッシュ関数は暗号化ではないため、MD5は暗号化ではありません。片方向の非可逆な方法です。暗号化は復号化を前提としています。正しい鍵で暗号化されたデータを暗号化されていない状態に戻すことができます。 – zaph

+0

MD5は安全なパスワードベリファイアではありません。ハッシュ関数を使用するだけでパスワードベリファイアを保存するだけでは不十分で、単に塩を追加するだけでセキュリティを向上させることはほとんどありません。代わりに、約100msの間、ランダムな塩でHMACを繰り返し、塩をハッシュで保存します。 'PBKDF2'、' Rfc2898DeriveBytes'、 'password_hash'、' Bcrypt'、 'passlib.hash'などの関数を使用してください。要点は、攻撃者が無差別にパスワードを見つけるのに多くの時間を費やすことです。 – zaph

+0

両方のコメントに間違いはありませんが、2つの点があります。 1)私はPostgresが私に与える設備に限られています。 2)私が保護しているデータはあまり価値がないので、最高レベルのセキュリティで保護するために時間を費やすだけの価値はありません。 – RalphShnelvar

答えて

1

PostgreSQLは、パスワードをハッシュ化されたmd5接頭辞を持っています。

md548503dfd58720bd5ff35c102065a52d7 
+0

これはどこに記載されていますか?私が見つけたのはhttps://stackoverflow.com/questions/14918763/generating-postgresql-user-password – RalphShnelvar

+0

@RalphShnelvar https://www.postgresql.org/docs/current/static/catalog-pg-authid.htmlです。 –

-1

@zerkmsが提供する答えは部分的に正しいです。それは正しい答えに私を導いた。

回答はGenerating postgresql user passwordで提供され、私にとってはうまくいきます。

+0

リンクが不十分で、今後の読者には完全に役立つものではなく、無効になる可能性があります。 – zaph

+0

Ok ...将来の読者のために、私が指摘した記事は次のように書いています: 'pghash =" md5 "+ hashlib.md5(パスワード+ユーザ名).hexdigest()' – RalphShnelvar

関連する問題