密码强度计(密码检查器)设计指南

时间:2010-01-15 21:34:27

标签: passwords password-checker

我尝试过不同类型的密码强度计或密码检查程序,但是当我测试相同的密码时,所有这些都会给我不同的结果,因为每个都实现了自己的算法。

是否有一些官方标准或指南可以跟随我建立我自己的密码强度计。

如果没有官方标准,那么密码强度计应该检查哪些功能?

6 个答案:

答案 0 :(得分:3)

请考虑以下事项:

  • 长度
  • 混合案例
  • 没有多少重复的字符
  • 包括字母,数字和符号
  • 不包含部分用户名
  • 与先前密码不相似
  • 不与弱密码哈希相同
  • 不是键盘行走
  • 与个人无关
  • 不以通用后缀结尾
  • 不以公共前缀
  • 开头

见Bruce Schneier的post on passwords以及this post

答案 1 :(得分:1)

据我所知,没有标准,因为有很多好的(即强)密码的定义。

需要考虑的一些事项:

  • 长度 - 越长越好
  • 混合案例
  • 包括数字和字符
  • 包含非字母数字字符
  • 不是字典词
  • 是一个短语

等等

答案 2 :(得分:0)

我还要补充: 不包括用户名字符串,如果用户名字符串很长,则不包括用户名的一部分。

答案 3 :(得分:0)

我会在戒指中抛出另一个标准:

  • 没有“键盘行走”

因为很多人希望用户记住难以记住的密码,所以他们会使用键盘模式来驯服疯狂。投入移位版本以获得良好的衡量标准。

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

答案 4 :(得分:0)

有许多指南(google)可以为强密码提供指导,其中大部分都是常识。在一天结束时,您可以应用自己的政策(或公司政策,如果有的话),以确定哪些是强大的,哪些不是,您的决定可能会受到您试图保护的内容的影响。

正如@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/

答案 5 :(得分: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+'%');

});

});