Passwords
真的強密碼有什麼好處嗎?
假設您有以下兩個密碼:
password_one = "Z;$]bnNvY3I-Ww]R4qm7PpiE/@y9Qz$cNk{d3" password_two = "4tjDqq])G-^u:PT~X]QBTa,XqUk[o9`(p?iC`w8*)*T9t\@l+^+U04m@_8CXV:E7L\R]\>N6M.0E|%Ud_f*]bN*rn^;FX7\M%5t?"
在我看來,他們倆都很強大。
password_two
比破解難嗎password_one
?我想這取決於涉及哪種散列。如果使用 Bcrypt 或 sha512 會有什麼好處
password_two
嗎?
我假設這些是通過從一組 95 個字元中獨立且均勻地隨機選擇字元而生成的。熵是等機率選擇數的以 2 為底的對數,因此隨機獨立選擇的每個角色都有貢獻 $ \log_2(95) \approx 6.6 $ 密碼強度。所以強度
password_one
大約是 $ 37 \times 6.6 = 244.2 $ 位。這已經比實際需要的任何加密密鑰更強大——它與 256 位密鑰相當。它已經遠遠超過了密碼雜湊算法的選擇相關的點;如果人們可以可靠地記住這麼強的密碼,我們就不需要這樣的算法了。人們選擇可怕的密碼;經常被引用的 XKCD 密碼強度漫畫以
Tr0ub4dor&3
28 位左右的密碼著稱,即使這樣也可能比平均水平要好得多。這意味著您
password_one
可以說是完全矯枉過正,因為:
- 密碼需要對使用者友好。例如,它們需要便於打字或輸入到自己的設備中。
- 如果您的密碼如此強大,那僅意味著您的弱點在其他地方,而且很可能比瘋狂密碼弱得多。你已經過了收益遞減點。
如果您只是普通的 Jane 或 Joe,沒有間諜機構等特別感興趣的對象,我認為 80 位(ish)強度的密碼對於網站登錄來說已經足夠強大了;一個 12 個字元的隨機 ASCII 字元密碼(例如,
Z;$]bnNvY3I-
)大約在這個級別,並且比您正在做的要方便得多。對於基於密碼的加密,您可以考慮將強度提高到大約 128 位。