我想了解密碼在Postgres中應該如何操作。Postgres:MD5密碼/普通密碼
https://www.postgresql.org/docs/current/static/sql-createrole.html說,對於加密/ UNENCRYPTED
如果目前的口令字符串已經是用MD5加密的格式,那麼它存儲加密,不被
所以我的未加密的密碼是:我的密碼 。
「MyPassword輸入」 的MD5哈希48503dfd58720bd5ff35c102065a52d7
如果我做
-- See https://www.postgresql.org/docs/9.6/static/sql-alterrole.html
ALTER ROLE "MeOhMy"
LOGIN
PASSWORD '48503dfd58720bd5ff35c102065a52d7'
;
,然後嘗試用 「MyPassword輸入」 做
sudo -u postgres psql meohmy -h 127.0.0.1 -d meohmy_development
我的時候,當然,第一得到提示輸入我的sudo密碼,然後通過Postgres提示「密碼爲meohmy」
如果我進入MyPassword輸入我得到
FATAL: password authentication failed for user "[email protected]"
如果我進入,相反,48503dfd58720bd5ff35c102065a52d7然後我就可以登錄。
什麼我不理解?
MD5不加密,因爲散列函數不是加密的,它們是單向不可逆的方法。加密假定解密,即用正確的密鑰加密數據可以返回到它的我們未加密的狀態。 – zaph
MD5不是安全或可接受的密碼驗證程序。當保存密碼驗證者只使用哈希函數是不夠的,只是添加一個鹽沒有提高安全性。相反,用隨機鹽迭代HMAC約100ms持續時間,然後用散列表保存鹽。使用諸如'PBKDF2','Rfc2898DeriveBytes','password_hash','Bcrypt','passlib.hash'或類似函數的函數。關鍵是要讓攻擊者花費大量時間通過強力查找密碼。 – zaph
雖然你的評論絕對正確,但有兩點需要注意: 1)我僅限於Postgres給我的設施。 2)我所保護的數據並不是那麼有價值,所以花時間保護它以最高等級的安全性是不值得的。 – RalphShnelvar