2017-03-08 90 views
0

我想用隨機鹽存儲一個散列密碼。散列值應該是,在兩個不同的sql表中是唯一的。跨2個不同的sql表的獨特散列值

鹽由隨機字符和數字組成,密碼和登錄中不允許使用斜線。

爲了確保唯一性,我想追加一個分隔符和唯一的登錄名。

實施例(僞碼):

hash(salt + password + 「/」 + login)  

這樣做是爲了避免尋找唯一隨機鹽兩個不同的表。

如果我用這種方式構建存儲的散列,它會不太安全嗎?

+0

只使用散列函數是不夠的,只是添加一個鹽沒有提高安全性。取而代之的是用隨機鹽對HMAC進行大約100毫秒的持續時間並用散列表保存鹽。使用「PBKDF2」,「Rfc2898DeriveBytes」,「password_hash」,「Bcrypt」等功能。關鍵是要讓攻擊者花費大量時間通過強力查找密碼。 – zaph

回答

0

這聽起來像你沒有使用正確類型的「散列」函數來「散列」你的密碼,因爲如果你是,那麼你就不需要問這個問題。

諸如SHA系列的普通散列函數不適合保護密碼。問題在於它們太快而無法計算,這意味着密碼可能會被強制使用。欲瞭解更多信息,請閱讀this

你應該使用的是一個函數,如bcrypt(或者如果不可用,至少使用pbkdf2)將輸入salt和密碼作爲單獨的參數,並輸出你存儲在你的「散列」數據庫。

我將代表加密和安全社區爲這個令人困惑的詞"hash"使用道歉。不幸的是,它看起來不會很快被修復。

+0

謝謝你的偉大的鏈接(https://www.troyhunt.com/our-password-hashing-has-no-clothes/),閱讀(和理解)的文字後,我可能會回來澄清我的問題。 – selcox