Google的验证密码强度的JS脚本

转载 2011年01月18日 11:18:00

<html>
<head>
<script>
     ratingMsgs = new Array(6);
    ratingMsgColors = new Array(6);
    barColors = new Array(6);
    ratingMsgs[0] = "太短";
    ratingMsgs[1] = "弱";
    ratingMsgs[2] = "一般";
    ratingMsgs[3] = "很好";
    ratingMsgs[4] = "极佳";
    ratingMsgs[5] = "未评级"; //If the password server is down
    ratingMsgColors[0] = "#676767";
    ratingMsgColors[1] = "#aa0033";
    ratingMsgColors[2] = "#f5ac00";
    ratingMsgColors[3] = "#6699cc";
    ratingMsgColors[4] = "#008000";
    ratingMsgColors[5] = "#676767";
    barColors[0] = "#dddddd";
    barColors[1] = "#aa0033";
    barColors[2] = "#ffcc33";
    barColors[3] = "#6699cc";
    barColors[4] = "#008000";
    barColors[5] = "#676767";
    function CreateRatePasswdReq(pwd) {
        if (!isBrowserCompatible) {
            return;
        }
        // if(!document.getElementById) return false;
        // var pwd = document.getElementById("pwd");
        if (!pwd) return false;
        passwd = pwd.value;
        var min_passwd_len = 6;
        if (passwd.length < min_passwd_len) {
            if (passwd.length > 0) {
                DrawBar(0);
            } else {
                ResetBar();
            }
        } else {
            //We need to escape the password now so it won't mess up with length test
            rating = checkPasswdRate(passwd);
            DrawBar(rating);
        }
    }
    function getElement(name) {
        if (document.all) {
            return document.all(name);
        }
        return document.getElementById(name);
    }
    function DrawBar(rating) {
        var posbar = getElement('posBar');
        var negbar = getElement('negBar');
        var passwdRating = getElement('passwdRating');
        var barLength = getElement('passwdBar').width;
        if (rating >= 0 && rating <= 4) { //We successfully got a rating
            posbar.style.width = barLength / 4 * rating + "px";
            negbar.style.width = barLength / 4 * (4 - rating) + "px";
        } else {
            posbar.style.width = "0px";
            negbar.style.width = barLength + "px";
            rating = 5; // Not rated Rating
        }
        posbar.style.background = barColors[rating];
        passwdRating.innerHTML = "<font color='" + ratingMsgColors[rating] +"'>" + ratingMsgs[rating] + "</font>";
    }
    //Resets the password strength bar back to its initial state without any message showing.
    function ResetBar() {
        var posbar = getElement('posBar');
        var negbar = getElement('negBar');
        var passwdRating = getElement('passwdRating');
        var barLength = getElement('passwdBar').width;
        posbar.style.width = "0px";
        negbar.style.width = barLength + "px";
        passwdRating.innerHTML = "";
    }
    /* Checks Browser Compatibility */
    var agt = navigator.userAgent.toLowerCase();
    var is_op = (agt.indexOf("opera") != -1);
    var is_ie = (agt.indexOf("msie") != -1) && document.all && !is_op;
    var is_mac = (agt.indexOf("mac") != -1);
    var is_gk = (agt.indexOf("gecko") != -1);
    var is_sf = (agt.indexOf("safari") != -1);
    function gff(str, pfx) {
        var i = str.indexOf(pfx);
        if (i != -1) {
            var v = parseFloat(str.substring(i + pfx.length));
            if (!isNaN(v)) {
                return v;
            }
        }
        return null;
    }
    function Compatible() {
        if (is_ie && !is_op && !is_mac) {
            var v = gff(agt, "msie ");
            if (v != null) {
                return (v >= 6.0);
            }
        }
        if (is_gk && !is_sf) {
            var v = gff(agt, "rv:");
            if (v != null) {
                return (v >= 1.4);
            } else {
                v = gff(agt, "galeon/");
                if (v != null) {
                    return (v >= 1.3);
                }
            }
        }
        if (is_sf) {
            var v = gff(agt, "applewebkit/");
            if (v != null) {
                return (v >= 124);
            }
        }
        return false;
    }
    /* We also try to create an xmlhttp object to see if the browser supports it */
    var isBrowserCompatible = Compatible();

    //CharMode函数 
    //测试某个字符是属于哪一类. 
    function CharMode(iN) {
        if (iN >= 48 && iN <= 57) //数字 
            return 1;
        if (iN >= 65 && iN <= 90) //大写字母 
            return 2;
        if (iN >= 97 && iN <= 122) //小写 
            return 4;
        else
            return 8; //特殊字符 
    }
    //bitTotal函数 
    //计算出当前密码当中一共有多少种模式 
    function bitTotal(num) {
        modes = 0;
        for (i = 0; i < 4; i++) {
            if (num & 1) modes++;
            num >>>= 1;
        }
        return modes;
    }
    //checkStrong函数 
    //返回密码的强度级别 
    function checkPasswdRate(sPW) {
        if (sPW.length <= 4)
            return 0; //密码太短 
        Modes = 0;
        for (i = 0; i < sPW.length; i++) {
            //测试每一个字符的类别并统计一共有多少种模式. 
            Modes |= CharMode(sPW.charCodeAt(i));
        }
        return bitTotal(Modes);
    } 
  </script>
</head>
<body>
<table>
    <tbody>
        <tr>
            <td>密码:</td>
            <td><input id=pwd onkeyup=CreateRatePasswdReq(this); type=password value=&quot;&quot;> <span style=&quot;FONT-FAMILY: arial,sans-serif&quot;>长度必须最少包含 6 个字符。</span>
            <table cellSpacing=0 cellPadding=0 border=0>
                <tbody>
                    <tr>
                        <td vAlign=top noWrap width=0><font face=&quot;Arial, sans-serif&quot; size=-1>密码强度: </font></td>
                        <td vAlign=top noWrap><font face=&quot;Arial, sans-serif&quot; color=#808080 size=-1><strong>
                        <div id=passwdRating></div>
                        </strong></font></td>
                    </tr>
                    <tr>
                        <td height=3></td>
                    </tr>
                    <tr>
                        <td colSpan=2>
                        <table id=passwdBar cellSpacing=0 cellPadding=0 width=180 bgColor=#ffffff border=0>
                            <tbody>
                                <tr>
                                    <td id=posBar width=0% bgColor=#e0e0e0 height=4></td>
                                    <td id=negBar width=&quot;100%&quot; bgColor=#e0e0e0 height=4></td>
                                </tr>
                            </tbody>
                        </table>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
</body>
</html>

js实现密码强度校验

密码强度等级说明,字符包括:小写字母、大写字母、数字、特殊字符
  • laosaidan
  • laosaidan
  • 2017年07月18日 10:10
  • 400

最简单的js 判断密码强度

密码强度检测
  • cometwo
  • cometwo
  • 2016年06月03日 11:19
  • 7565

JavaScript判断密码强度

在一些网站注册的时候经常可以看到密码强度提示,例如优酷: 今天自己做了一个JS密码强度判断,效果如下: 以下是代码:...
  • ayhlay
  • ayhlay
  • 2013年09月06日 11:07
  • 12499

JS正则表达式应用——基于Jquery的验证密码强度特效

当用户登录网站时,一般要求用户提供登录该网站的用户名和密码。从某种意义上说,密码的复杂程度越高,用户的信息安全性越高。因此,很多网站在注册用户信息或修改用户密码时,往往会提供一个密码强度的说明,从而提...
  • xiaozhi_2016
  • xiaozhi_2016
  • 2016年09月02日 15:40
  • 1645

js密码、重复输入密码、密码强度校验

//大写字母、小写字母、数字、特殊字符 满足其中三种即可 function checkStrong(value) { var strength = 0; if (value.lengt...
  • lovelovelovelovelo
  • lovelovelovelovelo
  • 2016年11月04日 10:06
  • 1832

js判断 密码强度验证方法(转载)

转载于:http://kongcodecenter.iteye.com/blog/1315305 /*   *说明:   *  该方法主要分析密码的内容构成,密码长度等情况,然后评分划分密码强度等级 ...
  • skieske
  • skieske
  • 2017年02月06日 17:06
  • 229

密码验证,密码强度正则表达式

原文地址:http://blog.sina.com.cn/s/blog_46ee420b0100yi3g.html 注:还未验证- -,先记录下来 当用户登录网站时,一般要...
  • godwillcry
  • godwillcry
  • 2015年08月18日 17:20
  • 2488

php判断密码强度

一、php页面 $score = 0; if(!empty($_GET['value'])){   //接收的值 $str = $_GET['value']; }else{ $str = ''; } ...
  • u011852589
  • u011852589
  • 2013年09月22日 09:19
  • 2179

JavaScript动态检测密码强度的原理及实现

在注册账户的时候通常会在设置密码的时候出现密码强度动态检测,网上看了一些帖子,大多只写了具体的实现过程,而没有对原理的分析过程。下面着重讲一下其原理。原理分析通常实现密码强度动态判断有两种方案实现: ...
  • Yeoman92
  • Yeoman92
  • 2016年12月07日 16:54
  • 1074

JS验证密码强度

首先说明下我的密码强度验证规则
  • u014339376
  • u014339376
  • 2014年08月29日 11:00
  • 285
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Google的验证密码强度的JS脚本
举报原因:
原因补充:

(最多只允许输入30个字)