2014-06-20 43 views
0

我們被要求將密碼強度驗證添加到我們的系統從客戶。他們所要求的是,密碼至少8個字符,並且不包括「常見詞語,如天,月等」。密碼強制避免常見字詞,如天,月等

有誰知道任何算法或示例,將涵蓋此級別的密碼強度測試?

感謝

+0

你使用的是C#嗎? – nightshade

+0

我正在使用vb.net,但我可以根據需要進行轉換。 – Matt

+0

你有沒有試過我的解決方案?我只是導入了你需要添加的庫(當我打開一個項目時其他4個已經來到這裏) – nightshade

回答

0

爲什麼不從互聯網上下載任何'密碼'的文本列表(其中將包括許多許多字典詞彙)。在谷歌搜索詞表和密碼,我相信你會得到很好的打擊。

  1. 將列表加載到集合中。
  2. 從用戶獲取密碼
  3. 使用LINQ來比較集合中未包含'incoming'密碼。
  4. 如果是;請求一個新的密碼並返回(2)
  5. 如果不是,使用該密碼。

使用外部列表意味着他們可以不斷更新不允許的密碼列表 - 而不是像上面的例子那樣對其進行硬編碼。

0

您可以使用匹配的名稱正則表達式....長度很容易(只檢查長度屬性)......這裏是如何捕捉到,如果它有一個例子它裏面天...

using System.Text.RegularExpressions; 

class tester 
{ 
    static void Main() 
    { 
     string[] NotValid = { "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday",}; 

     string password = "Monday5"; 

     bool isvalid = password.Length > 7; 
     foreach (string s in NotValid) 
      if (Regex.IsMatch(password, "^.*" + s + ".*$", RegexOptions.IgnoreCase)) 
       isvalid = false; 

     if(!isvalid) 
      Console.WriteLine("Your password doesn't match our strength requirements"); 
    } 
} 

如果您的密碼包含任何NotValid陣列中的單詞,然後將isValid方法是錯誤的......

你可以找到關於C#正則表達式的here

更多信息3210