3 回答

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

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊
正確的做法是從前端獲取密碼,使用相同的算法對(duì)其進(jìn)行加密,并將加密方式與存儲(chǔ)的密碼進(jìn)行比較。

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