[英]store hashed passwords to Mysql
我正在研究關於將密碼散列並將密碼存儲到PHP.NET上的數據庫。 該網站說:
例如,如果要將數據存儲在MySQL數據庫中,請記住varchar字段會在插入過程中自動刪除尾隨空格。 由於加密數據可以以空格(ASCII 32)結尾,因此刪除將損壞數據。 而是將數據存儲在tinyblob / tinytext(或更大)字段中。
這建議哪個更好? 還是我不得不問:其中一個更好嗎? 如果答案是肯定的,那是什么? 最后,我該如何使用PDO將密碼存儲到數據庫。 我以為我可以像文件一樣將信息寫入blob行,但是如果我從輸入中獲取值,則必須使用哪種方法或函數? 你能解釋一下嗎?
當存儲哈希密碼時,則不會出現空格刪除問題:
密碼應使用經過驗證的現代密鑰擴展算法進行哈希處理,但不能使用SHA-256或MD5等加密哈希函數進行哈希處理。 合適的算法包括PBKDF2 , bcrypt或scrypt 。
例如,用bcrypt哈希字符串“密碼”並生成新的鹽可能會產生
$2a$12$PuYHvYwgKeD.hQ1Dv6nLQuxUkv5zP3lYLPHqdMOzgwPVaGGSAs07u
`-----'`-----------······· ·········-------'
algorithm random salt password hash
parameters
整個字符串都可以用作鹽,因為實際的密碼哈希將被截斷而不用作鹽。
驗證登錄嘗試的推薦工作流程:
推薦的設置新密碼的工作流程:
進一步的評論:
[1]此處,“純文本”表示可打印的ASCII字符。 它不參考密碼的明文。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.