2010-01-15 57 views
7

我已經嘗試了不同類型的密碼強度計或密碼檢查器,但是當我測試相同的密碼時,所有的結果都給了我不同的結果,因爲每個實現它自己的算法。密碼強度計指南(密碼檢查器)設計

是否有一些官方標準或指引,可以跟着我建立我自己的密碼強度表。

如果沒有官方標準,密碼強度計會檢查哪些功能?

+2

我認爲該算法的標準化會削弱它的實力,因爲在試圖破解密碼時,malefactors會有一套很好且狹義的規則來利用它。如果我知道它有2-3個數字,5-6個字母和一個小標點符號,那麼破解密碼要容易得多,如果我對你的特定標準更加了解的話。我不知道答案。 – Jay

回答

3

考慮以下幾點:

  • 長度
  • 混合大小寫
  • 沒有多少重複的字符
  • 包含字母,數字和符號
  • 不包括的一部分用戶名爲
  • 沒有類似之前的密碼
  • 不會散列到同樣的事情作爲一個弱密碼
  • 是不是鍵盤步行
  • 是不相關的個​​體
  • 不與常見的後綴結束
  • 不以共同前綴開頭

請參閱Bruce Schneier的post on passwords以及this post

+0

偉大的施奈爾文章。非常有用。謝謝。 – RRUZ

1

據我所知沒有標準,因爲有很多好的密碼應該是什麼的定義。

有些事情要考慮:

  • 長度 - 時間越長越好
  • 混合大小寫
  • 包含數字和字符
  • 包括非字母數字字符
  • 是不是字典詞
  • 是短語

+0

「包含無字母數字字符」?您剛纔在「包括數字和字符」這一字母數字之前的那一行中說過? –

+0

這是一個錯字。現在修復。 – ChrisF

0

我也想補充: 不包括用戶名字符串,或用戶名的甚至是一部分,如果這是一個漫長的。

0

我會扔另一個標準環:

  • 沒有「鍵盤走」

因爲這麼多的人希望用戶記住那些難記的密碼,他們訴諸於鍵盤模式來馴服瘋狂。投入移位版本以獲得更好的效果。

哦,Twitter's forbidden password list也沒有。

0

有一些指導原則(谷歌),指導什麼使一個強大的密碼,其中大部分是常識。在一天結束時,您可以將自己的政策(或公司的政策,如果有的話)應用於強有力的事情,而您的決策可能會受到您試圖保護的內容的影響。

正如@jay所說,我認爲標準化這樣的事情不會是明智的做法!

http://net.tutsplus.com/tutorials/javascript-ajax/build-a-simple-password-strength-checker/

http://www.ibm.com/developerworks/lotus/library/ls-password_quality/index.html#N100F5

思想這個網站是特別好,因爲它給了他們正在使用的算法,以及它們如何計算強度的想法。

http://www.passwordmeter.com/

0

密碼的強度應該代表的幾個參數,如特殊字符和數字,密碼長度存在檢查等

請檢查此鏈接:

http://tinytute.com/2014/06/03/animated-password-strength-checker-quick-easy/

的jQuery代碼塊:

$(文件)。就緒(函數(){

$("#textBox").keyup(function(){ 

    var passWord = $("#textBox").val(); 
    var passLength = passWord.length; 
    var specialFlag = 0; 
    var numberFlag = 0; 
    var numberGenerator = 0; 
    var total = 0; 

    if(/^[a-zA-Z0-9- ]*$/.test(passWord) == false) { 

     specialFlag =20; 
    } 


    if(passWord.match(/[0-9]/)) { 

     numberFlag = 25; 
    } 

    if(passLength>4&&passLength<=6){ 
     numberGenerator =25; 
    }else if(passLength>=7&&passLength<=9){ 
     numberGenerator =35; 
    }else if(passLength>9){ 
     numberGenerator =55; 
    }else if(passLength>0&&passLength<=4){ 
     numberGenerator =15; 
    }else{ 
     numberGenerator =0; 
    } 

    total = numberGenerator + specialFlag + numberFlag; 
    if(total<30){ 
     $('#progressBar').css('background-color','#CCC'); 
    }else if(total<60&&total>=30){ 

     $('#progressBar').css('background-color','#FF6600'); 

    }else if(total>=60&&total<90){ 

     $('#progressBar').css('background-color','#FFCC00'); 

    }else if(total>=90){ 

     $('#progressBar').css('background-color','#0f0'); 

    } 
    $('#progressBar').css('width',total+'%'); 

}); 

});