java编写脚本校验修改密码_javascrpt密码强度校验函数详解

最近写了个密码强度验证的函数,主要验证以下内容

1、密码最小和最大长度

2、连续字符串出现的次数

3、字符连续出现的次数

4、禁止特定的字符串作为密码

5、密码字符串的组合强度要求,必须含有大小写字母,必须含有数字,必须含有特殊字符

6、输入密码必须与确认密码一致

7、支持禁止使用用户名作为密码

8、是否存在连续性的字符串,是否存在逆序性的字符串

(function(window, verifyPwd){

window.verifyPwd = {

/*最小长度*/

minLength : 6

/*最大长度*/

maxLength : 18,

/*字符重复次数*/

repeatCount : 0,

/*连续字符*/

seriesCount : 3,

/*特定过滤字符串*/

filter : [

"qaz",

"wsx",

"edc",

"qwe",

"asd",

"zxc"

],

/*允许的字符串*/

arrRegex : ['[0-9]', '[a-z]', '[A-Z]', '[!@#$%^&*()_-]' ],

/**

* 验证密码

* @param userName 用户名

* @param pwd 密码

* @param confirmPwd 确认密码

* @returns {boolean}

*/

verify : function(userName, pwd, confirmPwd){

userName = trim(userName);

pwd = trim(pwd);

if(!userName || userName.length == 0){

alert('请先输入用户名');

return false;

}

if(!pwd || pwd.length == 0){

alert('请输入密码');

return false;

}

if (pwd.length < this.minLength) {

alert('密码长度至少需要' + this.minLength + '位');

return false;

}

if (pwd.length > this.maxLength) {

alert('密码长度超过'+ this.maxLength +'位');

return false;

}

/*判断输入密码与确认密码是否一致*/

if(confirmPwd && confirmPwd.length > 0){

if(pwd != confirmPwd){

alert('输入密码与确认密码不一致');

return false;

}

}

/*判断密码中是否存在用户名*/

if (pwd.indexOf(userName) >= 0) {

alert('密码中不能出现用户名为' + userName);

return false;

}

if (!eval('/' + this.arrRegex[0] + '/').test(pwd)) {

alert('密码没有包含数字');

return false;

}

if (!eval('/' + this.arrRegex[1] + '/').test(pwd)) {

alert('密码没有包含小写字母');

return false;

}

if (!eval('/' + this.arrRegex[2] + '/').test(pwd)) {

alert('密码没有包含大写字母');

return false;

}

if (!eval('/' + this.arrRegex[3] + '/').test(pwd)) {

alert('密码没有包含!@#$%&*_等至少一个特殊字符');

return false;

}

/*判断是否存在过滤性字符串*/

if(this.filter.length > 0){

for(var i = 0, length = this.filter.length; i < length; i++){

var value = this.filter[i];

if(pwd.indexOf(value) < 0){

continue;

}

alert("密码中不允许含有"+ value);

return false;

}

}

/*判断是否存在重复字符串*/

if(this.isRepeate(pwd)){

alert('密码中不能出现重复字符');

return false;

}

/*判断是否存在连续性字符串*/

if(this.isSeries(pwd)){

alert('密码中不能存在'+ this.seriesCount +'个以上的连续字符');

return false;

}

return true;

},

/**

* 是否存在重复字符串

* @param pwd 密码

* @returns {boolean}

*/

isRepeate : function(pwd){

if(pwd && pwd.length > 0){

for(var i = 0, length = pwd.length; i < length; i++){

var currentChar = pwd.charAt(i);

var prevChar = i == 0 ? "" : pwd.charAt(i - 1);

if(currentChar == prevChar){

return true;

}

}

}

return false;

},

/**

* 是否存在连续性字符串

* @param pwd 密码

* @returns {boolean}

*/

isSeries : function(pwd){

if(pwd && pwd.length > 0) {

/*自身算起*/

var ascSeriesCount = 1;

var descSeriesCount= 1;

/*存在顺序型的连续性的字符串*/

for (var i = 0, length = pwd.length; i < length; i++) {

var currentCharCode = pwd.charCodeAt(i);

var prevCharCode = i == 0 ? "" : pwd.charCodeAt(i - 1);

if(currentCharCode == prevCharCode + 1){

ascSeriesCount++;

if(ascSeriesCount == this.seriesCount){

return true;

}

} else{

ascSeriesCount = 1;

}

}

/*存在逆序性的连续性的字符串*/

for (var i = pwd.length - 1; i >= 0; i--) {

var currentCharCode = pwd.charCodeAt(i);

var prevCharCode = (i - 1) >= 0 ? pwd.charCodeAt(i - 1) : "";

if(currentCharCode + 1 == prevCharCode){

descSeriesCount++;

if(descSeriesCount == this.seriesCount){

return true;

}

} else{

descSeriesCount = 1;

}

}

}

return false;

},

/**

* 初始化方法

* @param userNameId 用户id

* @param pwdId

*/

init : function(userNameId, pwdId){

$("#"+ pwdId).on("blur", function(){

var userName = $("#"+ userNameId).val();

var pwd = this.value;

if(userName.length == 0){

$("#"+ userNameId).focus();

alert("请输入用户名");

return false;

}

/*若验证正确,进行加密处理*/

if(this.verify(userName, pwd)){

pwd = md5(pwd);

$("#"+ pwdId).val(pwd);

}

});

}

}

})(window, undefined);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值