3 回答

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

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