3 回答

TA貢獻1886條經驗 獲得超2個贊
您應該以散列形式存儲密碼。這樣您將無法對其進行逆向工程以獲取原始密碼。現在您可能會問為什么要使用單向哈希來存儲密碼?問題是,您不希望任何人對數據庫中的數據進行逆向工程。即使有人可以訪問您的數據庫,他們仍然無法知道實際的密碼?,F在談談如果您自己無法獲得原始密碼,如何驗證密碼。
問題是,你不必這樣做。您只需讓用戶輸入他的密碼,然后對輸入的密碼進行散列(并且由于相同數據的散列將始終生成相同的散列)您可以輕松驗證用戶輸入的密碼和您散列的密碼是否與已散列的相匹配并存儲密碼。
更簡單的方法是,您必須在注冊時獲取密碼p
并將其作為散列密碼存儲在數據庫中hashed_p
?,F在,當您想要登錄或驗證密碼時,您再次要求用戶輸入密碼?,F在您將對p
用戶輸入的密碼進行哈希處理并生成哈希密碼hashed_p
。然后您將將此 hashed_p 與hashed_p
數據庫中的散列密碼進行比較。
因此,要驗證您必須檢查用戶輸入的密碼的哈希值是否等于數據庫中存儲的密碼的哈希值。這就是密碼散列的工作原理。

TA貢獻1794條經驗 獲得超7個贊
我們今天存儲和驗證用戶密碼的默認且最安全的方法是“加鹽慢哈希”。(簡單的哈??赡懿粔蚝茫?/p>
以從 SH256 生成的十六進制表示形式加密到數據庫。
假設您的意思是使用 SHA-256 對密碼進行哈希處理。正如已經評論過的,加密和散列之間存在差異,在這個領域你需要清楚
我對如何確定用戶是否擁有正確的密碼感到困惑
選擇與用戶密碼的哈希值一起存儲的鹽
使用鹽對用戶提供的密碼(登錄時提供)進行哈希處理
從數據庫中選擇用戶名和密碼哈希匹配的用戶記錄
添加回答
舉報