2010-01-15 55 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+'%'); 

}); 

});