JavaScript判断密码强度

先上Demo,下面是代码:

(function ($) {
    /*
     * 0-弱
     * 1-中
     * 2-强
     */

    var pswstrength = function () {}

    pswstrength.prototype = {
        constructor: pswstrength,
        //Unicode 编码区分数字,字母,特殊字符
        CharMode: function (iN) {
            if (iN >= 48 && iN <= 57) //数字(U+0030 - U+0039)
                return 1; //二进制是0001
            if (iN >= 65 && iN <= 90) //大写字母(U+0041 - U+005A)
                return 2; //二进制是0010
            if (iN >= 97 && iN <= 122) //小写字母(U+0061 - U+007A)
                return 4; //二进制是0100
            else //其他算特殊字符
                return 8; //二进制是1000
        },
        bitTotal: function (num) {
            modes = 0;
            for (i = 0; i < 4; i++) {
                if (num & 1) //num不是0的话
                    modes++; //复杂度+1
                num >>>= 1; //num右移1位
            }
            return modes;
        },
        check: function (sPW) {
            if (sPW.length < 7) //小于7位,直接“弱”
                return 0;
            Modes = 0;
            for (i = 0; i < sPW.length; i++) { //密码的每一位执行“位运算 OR”
                Modes |= this.CharMode(sPW.charCodeAt(i));
            }
            return this.bitTotal(Modes);
        }
    }

    if (typeof $.pswstrength == 'undefined' || $.pswstrength == null) {
        $.pswstrength = new pswstrength();
    }
})(jQuery)

原理主要利用二进制数,数字标记为1,大写字母标记为2,小写字母标记为4,特殊字符标记为8,他们的二进制数如下表:

1 0001
2 0010
4 0100
8 1000

位运算OR计算密码的每一位,得到一个四位的二进制数,从而得出密码强度。

如果不了解位运算的话,可以看看 W3School 的教程



标签:

无觅相关文章插件,快速提升流量