多平台实现密码强度(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实现方法:

查看源码

时间: 2024-08-29 15:11:01

多平台实现密码强度(Javascript 、android、ios)的相关文章

简单、高效、易用的全平台(Windows/Linux/ARM/Android/iOS)web实现RTMP推送组件EasyRTMP-Android BUS传递消息过程介绍

背景分析 RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写,该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMP/RTMPS/RTMPE等多种变种.RTMP是一种设计用来进行实时数据通信的网络下ieyi,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信.RTMP推流,就是将直播内容推送到服务器的过程. EasyRTMP-Android BUS传递消息过程 提出问题EasyRTMP-Andro

javascript 按位或(|),无符号右移(&gt;&gt;&gt;)运算,组合技巧来实现————密码强度提示,四种情况??

直接上代码,原来的代码中,switch中的第一个case,判断之后,少加了个break 跳出判断语句,害得我查了半天,“怎么样式老是不对,不科学啊,呵呵,原来是没跳出case的判断了,还会执行后面的判断!!,哎,嘿嘿,不过后来还是发现了,开心中...” 原文地址:http://www.cnblogs.com/wybztn/archive/2009/11/18/1605285.html 这里还有个重要的设计技巧, 0001, 0010, 0100, 1000各代表一种情况的话,组合起来就有很多种情

[修复] Firemonkey 画线问题(Android &amp; iOS 平台)

问题:官方 QC 的一个 Firemonkey 移动平台画线问题: RSP-14309: [iOS & Android] Delphi 10.1 Berlin - drawing problemshttps://quality.embarcadero.com/browse/RSP-14309 适用:所有 Firemonkey 版本 for Android & iOS 修复方法: 请将源码 FMX.StrokeBuilder.pas 复制到自己的工程目录里,再进行修改. Step1: 找到下

【重要】U3D存放本地游戏存档——不同平台载入XML文件的方法——IOS MAC Android

在PC上和IOS上读取XML文件的方式略有差别,经测试,IOS上不支持如下方法载入XML文件: XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("Assets/Resources/text.xml"); IOS上载入XML的正确方法有2种: (1)方法一 TextAsset textAsset = (TextAsset)Resources.Load(filename, typeof(TextAsset)); XmlDocument

利用JavaScript来实现用动态检验密码强度

平时我们会在某些网站的注册页面或者更改密码的页面发现当我们输入密码时,会有一个类似于进度条的长条进行提示用户输入的密码强度.如下图: 我看到有些人用几张不同的图片来替换,这样似乎可以,但是不太好.所以我通过其他方式实现. 实质上这是根据用户输入的不同密码强度来改变 颜色区域的长度. 密码强度这个横条实质是一个div,其他标记也可以,div里面有一个span标记,我就是通过改变span的长度和颜色来表现密码的强度的.原理很简单,但是在操作过程中,可能会遇到一些问题很头疼. 1.先在html页面里面

使用javascript对密码进行有密码强度提示的验证

好些网站的注册功能中,都有对密码进行验证并且还有强度提示.下面就来实现这种效果.密码强度说明:密码强度:弱——纯数字,纯字母,纯符号密码强度:中——数字,字母,符号任意两种的组合密码强度:强——数字,字母,符号全部都要有实现思路:在输入框提示区域编写两个div层,一个显示提示文字,一个显示密码强度提示.给文本框添加onkeyup的验证事件:1.没有输入时,显示“密码可由字母.数字.特殊符号组成,长度为6-18个字符”:2.光标聚焦到文本框中,在密码长度没有6位之前,显示“密码不少于6位”提示文字

基于规则评分的密码强度检测算法分析及实现(JavaScript)

简言 用正则表达式做用户密码强度的通过性判定,过于简单粗暴,不但用户体验差,而且用户帐号安全性也差.那么如何准确评价用户密码的强度,保护用户帐号安全呢?本文分析介绍了几种基于规则评分的密码强度检测算法,并给出了相应的演示程序.大家可以根据自己项目安全性需要,做最适合于自己的方案选择. 1 方案1 (简单) 方案1算法通过密码构成分析,结合权重分派,统计得出密码强度得分.得分越高,表示密码强度越大,也就越安全.方案1算法思想简单,实现容易. 1.1 方案1评分标准 一.密码长度: 5 分: 小于等

JavaScript用户名、密码强度、email、身份证号正则

用户名正则: (说明:4到16位,包括字母,数字,下划线,减号) var uPattern = /^[a-zA-Z0-9_-]{4,16}$/; 密码强度正则: (说明:最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符) var pPattern = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[[email protected]#$%^&*? ]).*$/; email正则: (说明: 以大写字母[A-Z].小写字母[a-

十大免费移动程序测试框架(Android/iOS)

十大免费移动程序测试框架(Android/iOS) 概述:本文将介绍10款免费移动程序测试框架,帮助开发人员简化测试流程,一起来看看吧. Bug是移动开发者最头痛的一大问题.不同于Web应用程序开发,你可以时刻发现并修复Bug,而移动应用程序中的Bug隐藏得很深,直到用户使用时才发现问题.这样一来,不仅有损产品在市场上的名声,而且还会影响销售.所以在产品发布以前,开发人员需要严格测试程序.本文将介绍10款免费移动程序测试框架,帮助开发人员简化测试流程,一起来看看吧. Appium for iOS