Postgresのパスワードハッシュはあなたが行ったものに非常に近く、次のようにユーザー名を含める必要があります:
pghash = "md5" + hashlib.md5(password + username).hexdigest()
AFAIK、postgresのドキュメントは実際にはこのハッシュ形式をまったく文書化しておらず、管理者がこれらのハッシュを直接処理することはめったにないと想定しているようです:(私が知っているこれらのハッシュを生成するための組み込みメソッドはありません。 ALTER USER
コマンドはpostgresハッシュ形式に準拠しておらず、パスワードがハッシュされていないと想定し、CREATEROLEのENCRYPTEDキーワードのドキュメントに従って内部的に処理します。 (私見これは欠陥のある動作です。ハッシュがユーザー名に依存している場合、異なるアカウント間でハッシュをコピーして貼り付けることができず、アカウントの名前が変更されたときに中断され、(エントロピーを推測すると)効果的な塩)。
ハッシュに関するpasslibのドキュメントの上部にある警告は、おそらくもっと明確である可能性があります。これは、passlibのドキュメントを閲覧している人々に、1)このハッシュはひどく安全ではない、2)自分のアプリケーションで使用するために採用すべきではない、3)作業の目的にのみ適していることを警告するためのものでした。 postgresユーザーアカウント。postgresが自身のアカウントでサポートする最も強力な(そして唯一の)ハッシュ形式であるため。
(postgresを使用して自分のアプリケーションのユーザーアカウントのパスワードをハッシュしようとしている場合は、pgcrypto拡張機能を使用してbcryptを使用するというClodoaldoの2番目の推奨事項を強くお勧めします)。