2017-01-20 30 views
1

我碰到一些代碼,看起來大約是這樣的:在隨機生成的密碼中強制執行密碼複雜性要求會使它們更安全嗎?

function generatePassword() { 
    let password; 
    do { 
    password = generateRandomString(); 
    } while (!checkPasswordComplexity(password)); 
    return password; 
} 

假設generateRandomString()返回字符組所需的真正的隨機字符串,checkPasswordComplexity()檢查密碼是否包含大寫/小寫的一些預定義的最小數量/數字/特殊字符。

基本上它會嘗試生成隨機密碼,檢查某些複雜性要求,如果檢查失敗,則會再次嘗試。

第一個問題:

這實際上不僅僅是返回從generateRandomString的第一個結果更安全?

第二個問題:

如果這其實是一個很好的做法,有沒有更有效的(但仍然是安全的)的方式直接生成滿足複雜需求的密碼?

回答

0

要開始回答我的問題:

第一個問題:

一方面,一個密碼破解可能會不太複雜的候選人密碼啓動。另一方面,如果黑客知道你的複雜性要求,這實際上減少了搜索空間。在實踐中,我不知道哪個更好。

疑問二:長度爲10的密碼

如果你需要,比方說,2特殊字符,然後隨機挑選2個字符從特殊字符集,然後將它們放置在最後的密碼隨機位置。然後用整個字符集中的隨機字符填充剩餘的8個位置。