多平台实现密码强度(Javascript 、android、ios)

         密码强度是目前很常用的一种功能,密码强度的实现,在web端都很好实现,可以很轻松的使用Javascript方法实现,目前因为项目需要,要在手机app上也实现密码强度,并且同时要在Android和ios上都实现相同功能,密码复杂度,无外乎大写字母、小写字母、数字和特殊符号,且需要加上重复字符出现的次数等,一般常用的方法都是使用正则表达式。
       查阅了很多资料,网上在app端实现密码强度的例子基本没有(手机QQ是调用的web页面,支付根本没有密码复杂度),且又要web端和app端的三种语言通用,没办法只有自己写了,将web端的javascript方法改写成,Android是java语言容易改写,ios用的是object-c语言改写费劲一点,三种语言的正则表达式写法都不一致,只能用不同方式实现要求。分享出来,让大家一起完善.

 

       javascript实现方法:

//检查密码的重复度
function CheckPwdRepetition(pLen, str) {
    var res = "";
    for (var i = 0; i < str.length ; i++) {
        var repeated = true;
        for (var j = 0; j < pLen && (j + i + pLen) < str.length; j++) {
            repeated = repeated && (str.charAt(j + i) == str.charAt(j + i + pLen));
        }
        if (j < pLen) { repeated = false; }
        if (repeated) {
            i += pLen - 1;
            repeated = false;
        }
        else {
            res += str.charAt(i);
        }
    }
    return res;
};
//检测密码强度
function CheckPwdStrength(password)
{
    var flag = 0;
    var score = 0;
    //password < 4 
    if (password.length < 7) {
        flag = 3;
        return flag;
    }

    //小于9,且是纯数字
    if (password.length < 9 && password.match(/^[0-9]*[1-9][0-9]*$/))
    {
        flag = 4;
        return flag;
    }

    //密码长度加分 
    score += password.length * 4;
    score += (CheckPwdRepetition(1, password).length - password.length) * 1;
    score += (CheckPwdRepetition(2, password).length - password.length) * 1;
    score += (CheckPwdRepetition(3, password).length - password.length) * 1;
    score += (CheckPwdRepetition(4, password).length - password.length) * 1;

    //step1:密码有三个数字
    if (password.match(/(.*[0-9].*[0-9].*[0-9])/)) { score += 5; }

    //step2:密码有两个特殊字符
    if (password.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)) { score += 5; }

    //step3:密码有大写和小写字母
    if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) { score += 0; }

    //step4:密码有数字和字母
    if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/)) { score += 15; }
   
    //step5:密码有数字和特殊字符
    if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([0-9])/)) { score += 15; }

    //step6:密码有字母和特殊字符
    if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([a-zA-Z])/)) { score += 15; }

    //step7:密码只有数字或只有字母
    if (password.match(/^\w+$/) || password.match(/^\d+$/)) { score -= 10; }
    //verifying 0 < score < 100 
    if (score < 0) { score = 0; }
    if (score > 100) { score = 100;}
    if (score < 36) { flag = 0; }
    else if (score < 70) { flag = 1; }
    else
    {
        flag = 2;
    }

    if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/) && password.match(/([0-9])/)) {

    } else {
        flag = 5;
        return flag;
    }
    return flag;
}


android实现方法:android实现方法:

查看源码

ios实现方法:

查看源码

 

             

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。