加鹽密碼儲存的最通用方法是?

時間 2021-05-06 09:59:36

1樓:

資料庫存上salt和hash,每當使用者註冊,隨機生成salt,hash = md5(password + salt)

登入的時候驗證md5(input + salt)和hash是否相等即可

2樓:exiledkingcc

目前最高票的方案太麻煩了,而且自己搞金鑰協商這些,並且把salt發到client,感覺不怎麼靠譜。應該直接使用HTTPS/TLS。

很多人用固定的值作為salt,或者根據使用者資訊生成salt,只是為了不儲存salt,這是錯誤的。

salt關鍵是要隨機。大可直接用乙個字段儲存。

服務端的密碼儲存:

bcypt(sha512(password),salt,cost)客戶端傳送sha512(password)。

cost設定大一些就足夠抵禦彩虹表攻擊了。

3樓:王絮飛

使用byte hash = PBKDF2(password, salt, PBKDF2_ITERATIONS, HASH_BYTES)沒煩惱

4樓:

歪個題,加鹽是一種比較古老的防止撞庫的方法,而基於零知識證明的認證方案是非常安全,能抵抗窮舉攻擊(更安全點說,明,密文安全)的方案,執行效率也不低。

5樓:魚魚

Secure Salted Password Hashing烏雲的翻譯:

加鹽hash儲存密碼的正確方式

相信樓主看了會有所了解吧。

6樓:

鹽要求的是隨機性,採用系統隨機數即可,不要用什麼時間、IP等任何有語意的資訊。如果採用固定鹽,在數學上等於沒加鹽,因為無法通過頻域分析,而這時密碼分析領域的最初級分析。至於鹽如何||密碼,這些模式可能也會暗藏很多意外的問題,主要是當前hash演算法都是全狀態輸出,包括md5/sha1/sha2。

沒分析清楚的時候可以前後各加乙個隨機數。以後sha3將會是海綿函式體系,對於模式的要求很少。

7樓:簡單教程

推薦你沒提到的想法,就是sha1(鹽.密碼)然後取前32位,鹽不要用單獨的字段儲存,用生成時間做鹽

為什麼?

節省儲存空間

拿到庫的人會認為你沒加鹽

拿到庫的人會認為你用md5

8樓:Hayden Chen

我也加個自己的理解,有問題請指出。

密碼P經過加鹽sa然後雜湊得到psh,psh在伺服器再進行雜湊psh_real,和鹽sa一起儲存在伺服器。

驗證過程:

客戶端: 使用者密碼用協商的隨機數作為金鑰來加密得到p_send.

伺服器:伺服器收到p_send,解密得到密碼P,將P加鹽sa然後雜湊得到psh,將psh做伺服器的雜湊得到psh_hash,檢查psh_hash和psh_hash_real是否一致,一致則驗證通過。

(這裡的隨機數是每次客戶端和伺服器之間協商得到的,驗證碼是一種(雖然驗證碼作為anti-robot比較合理),儲存的psh和鹽值是註冊的時候客戶端傳送過去的,所以註冊一般都用加密鏈結https)。

加鹽的重要性:

攻擊者拿到p_send沒有意義,因為這裡有個隨機數作為金鑰來加密,每次都不一樣,重放攻擊失效。

攻擊者攻破伺服器,拿到psh_real,如果沒有加鹽,攻擊者通過彩虹表得到psh_real兩次"反雜湊"的結果,即密碼明文或等價明文。得到密碼明文就可以偽造成客戶端加密為p_send且p_send每次都可用。

但是由於是加鹽的,攻擊者不知道鹽值sa,所以兩次雜湊之後得到無效的密碼明文或等價明文(因為不知道原密碼被鹽值如何擾動)。即使是固定加鹽,也大大增加了彩虹表建立的代價(即針對單個hash的字典攻擊和暴力攻擊還是可能成功的),如果每個使用者使用不同的隨機加鹽方式,彩虹表攻擊就幾乎失效了(想想那得是多麼龐大的表,兩個使用者使用同乙個密碼也會生成不同的雜湊值,即加大隨機,減少碰撞)。所以沒有辦法得到使用者的密碼。

而得不到使用者的密碼,就沒法讓伺服器成功驗證了。

9樓:梧緣

樓上答案很全面了,不過想指出的是樓上所指出的加鹽方式也不是非常安全,因為加的鹽比較規則。當然抵擋大部分的攻擊足夠了,在系統沒有足夠價值之前,也不會有人有興趣去嘗試攻擊了,因為得不償失。

更好的鹽值建議使用基於加密的偽隨機數生成器,因為不會很容易被猜到。另外乙個好的標準的是:鹽值至少和雜湊函式的輸出一樣長。

(足夠大的長度提供了足夠多的鹽值)

並且對於每個使用者的每個密碼,鹽值都應該是獨一無二的。每當有新使用者註冊或者修改密碼,都應該使用新的鹽值進行加密。

更全面的教程:加鹽密碼雜湊:如何正確使用

很好的一篇博文。

智聯招聘是明文儲存密碼的嗎?

首先,能把明文發給你,不代表它在儲存的時候用的是明文。再次,就算它儲存的用的是密文,也沒有什麼用,既然是可逆的,我拖庫的時候,順便把解密演算法一起拖走就是了,我管你明文儲存還是密文儲存?有差別麼?之前見過某系統的加密解密是直接做在乙個dll裡面的,解密也就是拖回來引用一下庫而已,你們覺得這跟明文儲存...

你認為最安全的網遊密碼保護措施是怎樣的?

大學的資訊管理課上,老師說過一句話 不要迷信任何密碼安全措施,只要是人造的東西,就一定會有漏洞。當然,這是一句很有道理的廢話。事實上也確實是這樣,每個熱門網遊都免不了盜號與被盜號的鬥爭。就算沒人盜號,很久不玩自己也可能會忘記密碼然後折騰半天。所以你要真讓我回答什麼是最安全的密碼措施,我認為 生物密碼...

國際音標是最完善的標音方法嗎?

jointer IPA絕對不是最完善的標音方法。比如漢字 白 的注音,IPA寫成 bai 從左往右讀就會讀成 巴衣 但實際上ai應讀為乙個整體即 挨 也即 b挨 再比如 悠 you,IPA會把它讀成yo u,也就是喲烏,而喲烏和衣y歐ou讀音相去甚遠,所以IPA不適合用來給漢字注音。其實這是個很簡單...