sql >> Databasteknik >  >> RDS >> PostgreSQL

Genererar postgresql användarlösenord

Postgres lösenords-hash är väldigt nära det du gjorde, det behöver bara användarnamnet inkluderas enligt följande:

 pghash = "md5" + hashlib.md5(password + username).hexdigest()

AFAIK, postgres docs dokumenterar inte riktigt detta hashformat alls, och verkar anta att administratörer sällan kommer att hantera dessa hash direkt :( Det finns inga inbyggda metoder för att generera dessa hash som jag känner till. Om lösenordet som ges till ALTER USER kommandot överensstämmer inte med postgres hash-format, det antar att lösenordet inte har hashas och tar hand om det internt - enligt dokumenten för CREATE ROLE:s ENCRYPTED nyckelord. (IMHO detta är ett felaktigt beteende, för om en hash beror på användarnamnet betyder det att hash inte kan kopieras och klistras in mellan olika konton, går sönder när kontot byter namn och (gissningsvis entropi) bara har ~6 bitar av effektivt salt).

Varningen högst upp i passlibs dokumentation för hashen kunde förmodligen vara tydligare. Det var tänkt att varna folk som bläddrar igenom passlib-dokumentationen att 1) ​​denna hash var fruktansvärt osäker, 2) att de inte skulle använda den för användning i sina egna applikationer, och 3) att den bara var lämplig för syftet att arbeta med postgres användarkonton, eftersom det är det starkaste (och enda) hashformatet som postgres stöder för sina egna konton.

(Om du försöker använda postgres för att hasha lösenord för din egen applikations användarkonton, skulle jag starkt rekommendera Clodoaldos rekommendation att använda bcrypt genom tillägget pgcrypto).



  1. Ignorerar tidszoner helt och hållet i Rails och PostgreSQL

  2. Enkelt sätt att överföra kolumner och rader i SQL?

  3. Jag kan inte ställa in flera bilder i rutnätsvy?

  4. Hur man genererar FRD-spårning i Oracle Apps 11i/R12