2016-01-06 67 views
1

我在理解用於密碼加密的哈希函數時遇到了麻煩。比方說,用戶註冊一個網站,密碼通過散列函數,並且摘要登錄到數據庫中。所以,實際的密碼不存儲在數據庫中。現在,當用戶想要登錄時,他輸入密碼。數據庫如何知道密碼是正確的?在登錄期間鍵入的密碼是否再次通過散列函數?但是我們會有兩個不同的摘要,那麼它是如何進行的?散列函數加密 - 數據庫如何知道密碼是否正確?

+2

爲什麼你認爲*「我們將有兩個不同的摘要」*?如果密碼,鹽,迭代次數相同,我們不會。 –

+1

我真的建議你閱讀這個:https://crackstation.net/hashing-security.htm 這裏是你需要知道的關於散列,他們的安全和他們是如何使用的「一切」。 – ProXicT

回答

2

詳細說明@ArtjomB。

通常使用散列密碼保存salt和迭代計數,有時在散列前用分隔符連接。

然後,可以將相同的salt和迭代計數應用於密碼嘗試以生成匹配的散列。

注意:鹽和迭代計數都不需要保密。

要使用的一個更好的函數是PBKDF2(基於密碼的密鑰推導函數2),而不是原始哈希函數,例如SHA256或帶SHA256的HMAC。不應使用MD5和SHA1功能。