代码之家  ›  专栏  ›  技术社区  ›  RRUZ

密码强度计(密码检查器)设计指南[已关闭]

  •  7
  • RRUZ  · 技术社区  · 15 年前

    我尝试过不同类型的密码强度测试仪或密码检查器,但是当我测试同一个密码时,它们都会给我不同的结果,因为每种方法都实现了自己的算法。

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

    如果没有官方标准,一个好的密码强度表应该检查哪些功能?

    6 回复  |  直到 15 年前
        1
  •  3
  •   Kaleb Pederson    15 年前

    考虑以下事项:

    • 长度
    • 混合情况
    • 没有太多重复的字符
    • 包括字母、数字和符号
    • 不包括用户名的一部分
    • 不会哈希到与弱密码相同的内容
    • 这不是键盘行走
    • 不以公共前缀开头

    看布鲁斯·施奈尔的 post on passwords 以及 this post .

        2
  •  1
  •   ChrisF toni    15 年前

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

    需要考虑的一些事项:

    • 长度-越长越好
    • 混合情况
    • 包括数字和字符
    • 包括非字母数字字符
    • 这是一个短语

    等等

        3
  •  0
  •   Daan    15 年前

    不包括用户名字符串,如果是长字符串,甚至不包括用户名的一部分。

        4
  •  0
  •   John    15 年前

    我将在拳击场上提出另一个标准:

    • 没有“键盘行走”

    因为很多人希望用户记住难以记住的密码,所以他们求助于键盘模式来平息这种疯狂。为了更好的测量,请加入移位版本。

    Twitter's forbidden password list

        5
  •  0
  •   David    15 年前

    有许多指导方针(谷歌)提供了关于什么是强密码的指导,其中大部分是常识。在一天结束时,你可以应用你自己的政策(或公司政策,如果他们有),什么是强大的,什么是不强大的,你的决定可能会受到你试图保护的东西的影响。

    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/

        6
  •  0
  •   Anjan    10 年前

    应代表几个参数检查密码的强度,如特殊字符和数字的存在、密码长度等。

    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+'%');
    
    });
    

    });